如何在Android Studio中从图库导入图片

huangapple 未分类评论43阅读模式
英文:

How to import image from gallery in android studio

问题

在这段代码中,stickerList 中有两个图片,这些图片来自于可绘制资源,并且可以完美地设置到我的 ImageView 中。现在我想要从相册中选择图片(而不是特定的硬编码可绘制资源),并设置任意我想要的图片。来自相册的新图片将会覆盖先前或主要的图片。我应该如何实现这个功能?

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

    }

    public class StickerAdapter extends RecyclerView.Adapter<StickerAdapter.ViewHolder> {

        // 这里是之前的硬编码图片资源
        int[] stickerList = new int[]{R.drawable.aa, R.drawable.bb};

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_sticker, parent, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.imgSticker.setImageResource(stickerList[position]);
        }

        @Override
        public int getItemCount() {
            return stickerList.length;
        }

        class ViewHolder extends RecyclerView.ViewHolder {
            ImageView imgSticker;

            ViewHolder(View itemView) {
                super(itemView);
                imgSticker = itemView.findViewById(R.id.imgSticker);

                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (mStickerListener != null) {
                            // 在这里你可以获取相册中选取的图片并设置到 ImageView 中
                            // 使用 mStickerListener.onStickerClick 方法来传递图片
                            // 然后更新 stickerList 或其他需要的数据
                        }
                        dismiss();
                    }
                });
            }
        }
    }

请注意,上述代码中的注释部分是关于如何实现从相册中选取图片并设置到 ImageView 的示意。你需要使用相应的方法来获取相册中的图片,然后更新适配器中的数据。

英文:

In this code, there are two images in stickerList, which come from drawable resources and can be set into my ImageView perfectly. Now I want to pick images from the gallery (rather than specific hardcoded drawables) and set any image I want. A new image from gallery which will override the previous or main one. How can i do that?

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

    }

    public class StickerAdapter extends RecyclerView.Adapter&lt;StickerAdapter.ViewHolder&gt; {

        int[] stickerList = new int[]{R.drawable.aa, R.drawable.bb};

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_sticker, parent, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.imgSticker.setImageResource(stickerList[position]);
        }

        @Override
        public int getItemCount() {
            return stickerList.length;
        }

        class ViewHolder extends RecyclerView.ViewHolder {
            ImageView imgSticker;

            ViewHolder(View itemView) {
                super(itemView);
                imgSticker = itemView.findViewById(R.id.imgSticker);

                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (mStickerListener != null) {
                            mStickerListener.onStickerClick(
                                    BitmapFactory.decodeResource(getResources(),
                                            stickerList[getLayoutPosition()]));
                        }
                        dismiss();
                    }
                });
            }
        }
    }

huangapple
  • 本文由 发表于 2020年4月5日 02:37:39
  • 转载请务必保留本文链接:https://java.coder-hub.com/61033006.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定