用listbox显示,每个item一个固定大小image,如手机图库般缩小并只显示图像中心,不是缩放拉伸,
使用bitmap.canvas.drawbitmap程序吊死,有无相关代码?
delphi安卓App,如何令图像如图库般显示中心部分并不拉伸?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 普通网友 2022-12-28 14:37关注
要在 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将显示新的位图而不拉伸它。
希望能帮到您!解决 无用评论 打赏 举报