ooooh 2022-12-28 12:01 采纳率: 33.3%
浏览 11

delphi安卓App,如何令图像如图库般显示中心部分并不拉伸?

用listbox显示,每个item一个固定大小image,如手机图库般缩小并只显示图像中心,不是缩放拉伸,
使用bitmap.canvas.drawbitmap程序吊死,有无相关代码?

  • 写回答

2条回答 默认 最新

  • m0_57781768 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将显示新的位图而不拉伸它。
    希望能帮到您!

    评论

报告相同问题?

问题事件

  • 创建了问题 12月28日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题