用listbox显示,每个item一个固定大小image,如手机图库般缩小并只显示图像中心,不是缩放拉伸,
使用bitmap.canvas.drawbitmap程序吊死,有无相关代码?
要在 Android 应用程序中显示图像列表而不拉伸它们,您可以使用 aRecyclerView并将layout_width和layout_height属性设置为,wrap_content以便视图仅占用显示内容所需的空间。然后,您可以使用 aRecyclerView.ViewHolder显示每个图像。
要显示图像的中心部分而不拉伸它,您可以使用该Bitmap.createBitmap方法创建一个新的位图,该位图是原始图像的子集,然后使用该ImageView.setImageBitmap方法显示新的位图。
下面是一个示例,说明如何使用这些方法在RecyclerView不拉伸图像的情况下显示图像列表:
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
private List<Bitmap> mImages;
public ImageAdapter(List<Bitmap> images) {
mImages = images;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_image, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Bitmap image = mImages.get(position);
int width = image.getWidth();
int height = image.getHeight();
int centerX = width / 2;
int centerY = height / 2;
int size = Math.min(width, height);
Bitmap centerBitmap = Bitmap.createBitmap(image, centerX - size / 2, centerY - size / 2, size, size);
holder.imageView.setImageBitmap(centerBitmap);
}
@Override
public int getItemCount() {
return mImages.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.image_view);
}
}
}
此代码将为作为原始图像子集的每个图像创建一个新位图,其大小由原始图像的宽度和高度中的较小者确定。新位图将在原始图像中居中。然后ImageView将显示新的位图而不拉伸它。
希望能帮到您!
delphi没有你说的控件,我现在的解决办法是将image放进scrollbox中,wrapmode设为center,showscrollbar设为fault