Android中如何利用ImageSelector实现微信图片选择器
发表于:2024-09-29 作者:千家信息网编辑
千家信息网最后更新 2024年09月29日,本篇内容介绍了"Android中如何利用ImageSelector实现微信图片选择器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希
千家信息网最后更新 2024年09月29日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安全错误
数据库的锁怎样保障安全
南昌网络安全培训人才缺口大
电视服务器链接异常修一下多少钱
软件开发QA策略
网络安全飞行试验
京东有网络安全总监吗
保税科技互联网
线切割系统软件开发
wifi无线串口服务器
连接池存入数据库乱码
纹理数据库是什么
手机如何全部清除数据库
数据库技术技术与应用摘要
北京学生网络技术服务建议
软件开发常见方法有哪些
国外大学生网络安全事件
网络安全小报内容简短
网络安全工程师最新招聘
远程连接服务器ssh命令
世界城市联动数据库
博朗软件开发有限公司
u31提示连接服务器失败
网络安全选修课堂总结
广州电信软件开发
网络安全巡检报表
网络安全及健康教育
数据库应用技术ks4252
回调服务器
国外大学生网络安全事件
诺顿网络安全监控怎么退出
12306代理服务器