Android中如何利用ImageSelector实现微信图片选择器
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容介绍了"Android中如何利用ImageSelector实现微信图片选择器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希
千家信息网最后更新 2024年11月23日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) { //获取选择器返回的数据 ArrayListimages = 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) { ArrayListimages = 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安全错误
数据库的锁怎样保障安全
网络安全英语作文主题词
毕业答辩会看数据库吗
计算机网络技术的电脑水平
海南数据库安全箱工程
服务器独享带宽
北大青鸟软件开发培训学校
南漳数据库修复
服务器PCB主要厂商
东城区品牌软件开发程序
软件开发项目验收需要初验吗
服务器 阿里巴巴
宽城区新时代网络安全答疑解惑
网络安全与信息化中心夜班
sql怎么实现对数据库排序
storms 关系数据库
广州c语言软件开发正规平台
朝阳区通用网络技术什么价格
服务器安全入门
计算机网络技术发展60年代
王牌战争开启服务器选择哪些选项
dell服务器u盘装系统
酷诗网络技术
怎么租游戏服务器
软件开发项目验收需要初验吗
杉泰健康科技有限公司互联网医疗
雪豹下载软件开发
汽车网络技术架构
软件开发公司有什么漏洞
上古5帝国人捏脸数据库
河南泓阳网络技术有限公司