Android中如何利用ImageSelector实现微信图片选择器
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Android中如何利用ImageSelector实现微信图片选择器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希
千家信息网最后更新 2026年11月01日Android中如何利用ImageSelector实现微信图片选择器
本篇内容介绍了"Android中如何利用ImageSelector实现微信图片选择器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
引入依赖
//在Project的build.gradle在添加以下代码allprojects { repositories { ... maven { url 'https://jitpack.io' } // 如果你使用的是1.4.0或更早的版本,这句可以不用。 maven { url 'https://maven.google.com' } } }//在Module的build.gradle在添加以下代码compile 'com.github.donkingliang:ImageSelector:1.5.0'
配置AndroidManifest.xml
//储存卡的读取权限//图片选择Activity //图片预览Activity //图片剪切Activity
调起图片选择器
//单选 ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, true, 0);//限数量的多选(比喻最多9张)ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9);ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9, selected); // 把已选的传入。//不限数量的多选ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE);ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, selected); // 把已选的传入。//或者ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0);ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0, selected); // 把已选的传入。//单选并剪裁ImageSelectorUtils.openPhotoAndClip(MainActivity.this, REQUEST_CODE);
REQUEST_CODE就是调用者自己定义的启动Activity时的requestCode,这个相信大家都能明白。selected可以在再次打开选择器时,把原来已经选择过的图片传入,使这些图片默认为选中状态。
接收选择器返回的数据
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && data != null) { //获取选择器返回的数据 ArrayList images = data.getStringArrayListExtra( ImageSelectorUtils.SELECT_RESULT); } } ImageSelectorUtils.SELECT_RESULT是接收数据的key。数据是以ArrayList的字符串数组返回的,就算是单选,返回的也是ArrayList数组,只不过这时候ArrayList只有一条数据而已。ArrayList里面的数据就是选中的图片的文件路径。
是不是有点懵了,我附上实际操作代码
1. adapter_image.xml布局
2.主布局
3.ImageAdapter(图片选择器工具类)
public class ImageAdapter extends RecyclerView.Adapter{ private Context mContext; private ArrayList mImages; private LayoutInflater mInflater; public ImageAdapter(Context context) { mContext = context; this.mInflater = LayoutInflater.from(mContext); } public ArrayList getImages() { return mImages; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.adapter_image, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { final String image = mImages.get(position); Glide.with(mContext).load(new File(image)).into(holder.ivImage); } @Override public int getItemCount() { return mImages == null ? 0 : mImages.size(); } public void refresh(ArrayList images) { mImages = images; notifyDataSetChanged(); } static class ViewHolder extends RecyclerView.ViewHolder { ImageView ivImage; public ViewHolder(View itemView) { super(itemView); ivImage = itemView.findViewById(R.id.iv_image); } }}
4.业务逻辑
package com.example.imageselector;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Button;import com.donkingliang.imageselector.utils.ImageSelectorUtils;import java.util.ArrayList;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;public class MainActivity extends AppCompatActivity { @BindView(R.id.btn_single) Button btnSingle; @BindView(R.id.btn_limit) Button btnLimit; @BindView(R.id.btn_unlimited) Button btnUnlimited; @BindView(R.id.btn_clip) Button btnClip; @BindView(R.id.rv_image) RecyclerView rvImage; private static final int REQUEST_CODE = 0x00000011; private ImageAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); rvImage.setLayoutManager(new GridLayoutManager(this, 3)); mAdapter = new ImageAdapter(this); rvImage.setAdapter(mAdapter); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && data != null) { ArrayList images = data.getStringArrayListExtra(ImageSelectorUtils.SELECT_RESULT); mAdapter.refresh(images); } } @OnClick({R.id.btn_single, R.id.btn_limit, R.id.btn_unlimited, R.id.btn_clip}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn_single: //单选 ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, true, 0); break; case R.id.btn_limit: //多选(最多9张) ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 10); //ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9, mAdapter.getImages()); // 把已选的传入。 break; case R.id.btn_unlimited: //多选(不限数量) ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE); //ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, mAdapter.getImages()); // 把已选的传入。 //或者 //ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0); //ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0, mAdapter.getImages()); // 把已选的传入。 break; case R.id.btn_clip: //单选并剪裁 ImageSelectorUtils.openPhotoAndClip(MainActivity.this, REQUEST_CODE); break; } }} "Android中如何利用ImageSelector实现微信图片选择器"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
图片
选择
数据
代码
数量
内容
实际
就是
布局
数组
更多
知识
实用
学有所成
接下来
不用
业务
再次
只不过
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州为想互联网科技有限公司
科技金融是不是互联网金融
互联网科技社
互联网科技公司发展
互联网科技作文
远信互联网科技
科技创新互联网企业
互联网科技视频素材
互联网科技宣传片
互联网科技大会案例
哈尔滨秒房互联网科技有限公司
蓝色互联网科技
贵州叶脉互联网科技有限公司所属行业
成都互联网科技公司工作好不好
深圳市罗太互联网科技有限公司
特约风豹互联网科技为什么扣费
银行科技岗属于互联网吗
张召忠谈中国互联网科技
萌小萌互联网科技河南有限公司
北京互联网科技类企业分布
互联网属科技
上海致骋互联网科技
佰商互联网科技有限公司
互联网校园科技培训
广州市恰铎互联网科技有限公司
华夏恒生科技与互联网科技
互联网行业科技股
中国科技和美国互联网
科技信息时代互联网发展
科技互联网经济论坛