Android 仿微信的图片选择器ImageSelector的使用

今天给你们介绍一个仿微信的图片选择器:ImageSelector。ImageSelector支持图片的单选、限数量的多选和不限数量的多选。支持图片预览和图片文件夹的切换。在上一篇文章 《Android 实现一个仿微信的图片选择器》 中我介绍了ImageSelector的实现思路和分析了它的核心代码,有兴趣的同窗能够看一下。完整的代码放在了GitHub,欢迎你们下载和使用。本篇文章为你们介绍ImageSelector的具体使用方式。 先上效果图: php

相册
文件夹
预览

**一、引入依赖 ** 在Project的build.gradle在添加如下代码java

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
			maven { url 'https://maven.google.com' }
		}
	}
复制代码

在Module的build.gradle在添加如下代码android

compile 'com.github.donkingliang:ImageSelector:1.6.0'
复制代码

二、配置AndroidManifest.xmlgit

<!-- 储存卡的读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 调用相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- 图片选择Activity -->
<activity android:name="com.donkingliang.imageselector.ImageSelectorActivity" //去掉ActivityActionBar // 使用者能够根据本身的项目去配置,不必定要这样写,只要不ActivityActionBar去掉就能够了。 android:theme="@style/Theme.AppCompat.Light.NoActionBar" // 横竖屏切换处理。    // 若是要支持横竖屏切换,必定要加上这句,不然在切换横竖屏的时候会发生异常。 android:configChanges="orientation|keyboardHidden|screenSize"/>
    
<!-- 图片预览Activity -->
<activity android:name="com.donkingliang.imageselector.PreviewActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"    android:configChanges="orientation|keyboardHidden|screenSize"/>

<!-- 图片剪切Activity -->
<activity android:name="com.donkingliang.imageselector.ClipImageActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

<!-- Android 7.0 文件共享配置,必须配置 -->
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
    <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
</provider>
复制代码

在res/xml文件夹下建立file_paths.xml文件(名字能够本身定义)github

<?xml version="1.0" encoding="utf-8"?>
<paths>

    <!-- 这个是保存拍照图片的路径,必须配置。 -->
    <external-path name="images" path="Pictures" />
</paths>
复制代码

三、调起图片选择器 ImageSelector支持图片的单选、限数量的多选和不限数量的多选。还能够设置是否使用相机、是否剪切图片等配置。ImageSelector提供了统一的调起相册的方法。数组

//单选
 ImageSelector.builder()
        .useCamera(true) // 设置是否使用拍照
        .setSingle(true)  //设置是否单选
        .start(this, REQUEST_CODE); // 打开相册

//限数量的多选(比喻最多9张)
ImageSelector.builder()
        .useCamera(true) // 设置是否使用拍照
        .setSingle(false)  //设置是否单选
        .setMaxSelectCount(9) // 图片的最大选择数量,小于等于0时,不限数量。
	.setSelected(selected) // 把已选的图片传入默认选中。
        .start(this, REQUEST_CODE); // 打开相册

//不限数量的多选
ImageSelector.builder()
        .useCamera(true) // 设置是否使用拍照
        .setSingle(false)  //设置是否单选
        .setMaxSelectCount(0) // 图片的最大选择数量,小于等于0时,不限数量。
	.setSelected(selected) // 把已选的图片传入默认选中。
        .start(this, REQUEST_CODE); // 打开相册

//单选并剪裁
ImageSelector.builder()
       .useCamera(true) // 设置是否使用拍照
       .setCrop(true)  // 设置是否使用图片剪切功能。
       .setSingle(true)  //设置是否单选
       .start(this, REQUEST_CODE); // 打开相册
复制代码

REQUEST_CODE就是调用者本身定义的启动Activity时的requestCode,这个相信你们都能明白。selected能够在再次打开选择器时,把原来已经选择过的图片传入,使这些图片默认为选中状态。bash

四、接收选择器返回的数据 在Activity的onActivityResult方法中接收选择器返回的数据。微信

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && data != null) {
            //获取选择器返回的数据
            ArrayList<String> images = data.getStringArrayListExtra(
            ImageSelectorUtils.SELECT_RESULT);
        }
    }
复制代码

ImageSelectorUtils.SELECT_RESULT是接收数据的key。数据是以ArrayList的字符串数组返回的,就算是单选,返回的也是ArrayList数组,只不过这时候ArrayList只有一条数据而已。ArrayList里面的数据就是选中的图片的文件路径。app

ImageSelector的使用就介绍到这里了。 最后给出ImageSelector的项目地址:github.com/donkinglian…maven

相关文章
相关标签/搜索