附上知乎开源的图片选择器(只是不支持剪裁)http://www.jianshu.com/p/382346bf0aa9
-----------------------------------------------------------------------------------------------------------------------------------------------------------
GitHub:https://github.com/FinalTeam/RxGalleryFinal
一、配置
1、下载或添加依赖
compile 'cn.finalteam.rxgalleryfinal:library:1.0.9'
compile 'com.android.support:recyclerview-v7:24.2.0'
compile 'com.android.support:appcompat-v7:24.2.0'
//支持以下主流图片加载器,开发者自行选择
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.facebook.fresco:fresco:0.12.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
2、配置manifest
(1)添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
(2)注册activity
<application
...
android:theme="@style/Theme_Light">
<activity
android:name="cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity"
android:screenOrientation="portrait"
android:exported="true"
android:theme="@style/Theme_Light.Default"/>
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme_Light.Default"/>
</application>
(3)添加主题和颜色
主题路径:RxGalleryFinal/sample/src/main/res/values/themes.xml颜色路径:RxGalleryFinal/sample/src/main/res/values/colors.xml
二、使用
Code
使用例子simple:
https://github.com/FinalTeam/RxGalleryFinal/blob/master/sample/src/main/java/cn/finalteam/rxgalleryfinal/sample/MainActivity.java
//自定义方法的单选
RxGalleryFinal
.with(context)
.image() //选择图片
.radio() //单选
.crop() //设置剪裁
.cropAspectRatioOptions(0, new AspectRatio("剪裁", 20, 10)); //单选能剪裁,AspectRatio设置标题和剪裁宽长.imageLoader(ImageLoaderType.GLIDE) //调用glide图片加载器
.subscribe(new RxBusResultSubscriber<ImageRadioResultEvent>() { //图片选择后的回调方法(单选要为ImageRadioResultEvent)
@Override
protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
//图片选择结果
String filePath=imageRadioResultEvent.getResult().getOriginalPath(); //获取照片的储存路径
.....
}
})
.openGallery();
//自定义方法的多选
RxGalleryFinal.with(MainActivity.this)
.image() //图片格式
.multiple() //设置多选
.maxSize(8) //最大选择数
.imageLoader(ImageLoaderType.UNIVERSAL) //图片加载器
.subscribe(new RxBusResultSubscriber<ImageMultipleResultEvent>() { //图片选择后的回调方法(单选要为ImageMultipleResultEvent)
@Override
protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
List<MediaBean> list=imageMultipleResultEvent.getResult(); //多个图片得到List<MediaBean>
String filePath=list.get(0).getOriginalPath(); //得到图片的选择路径
}
@Override
public void onCompleted() {
super.onCompleted();
Toast.makeText(getBaseContext(), "OVER", Toast.LENGTH_SHORT).show();
}
}).openGallery();
//得到图片多选的事件
RxGalleryListener.getInstance().setMultiImageCheckedListener(new IMultiImageCheckedListener() {
@Override
public void selectedImg(Object t, boolean isChecked) {
//这个主要点击或者按到就会触发,所以不建议在这里进行Toast
}
@Override
public void selectedImgMax(Object t, boolean isChecked, int maxSize) {
toast("你最多只能选择" + maxSize + "张图片");
}
});
//注解诠释
RxGalleryFinal.with(context)
.image()//图片
.radio()//单选
.crop()//裁剪
.video()//视频
.imageLoader(ImageLoaderType.GLIDE)
//里面可以选择主流图片工具 PICASSO GLIDE FRESCO UNIVERSAL(ImageLoader)
.subscribe(rxBusResultSubscriber)
.openGallery();
//调用裁剪.RxGalleryFinalApi.getModelPath()为默认的输出路径
RxGalleryFinalApi.cropScannerForResult(MainActivity.this, RxGalleryFinalApi.getModelPath(), inputImg);
//获取和设置 保存路径
RxGalleryFinalApi.getImgSaveRxCropDirByFile();//得到裁剪路径
RxGalleryFinalApi.getImgSaveRxCropDirByStr();//得到裁剪路径
RxGalleryFinalApi.getImgSaveRxDirByFile();//得到图片路径
RxGalleryFinalApi.getImgSaveRxCropDirByStr();//得到图片路径
//获取和设置 保存路径
//…… setImgSaveXXXXX().
//图片自动会存储到下面,裁剪会自动生成路径;也可以手动设置裁剪的路径;
RxGalleryFinalApi.setImgSaveRxSDCard("dujinyang");
//自定义裁剪
rx.cropAspectRatioOptions(0, new AspectRatio("3:3",30, 10))
.crop()
.openGallery();
//4.演示 单选裁剪 并且增加回掉 (裁剪必须在open之前)
RxGalleryFinalApi.getInstance(this)
.onCrop(true)//是否裁剪
.openGalleryRadioImgDefault(new RxBusResultSubscriber() {
@Override
protected void onEvent(Object o) throws Exception {
Logger.i("只要选择图片就会触发");
}
})
.onCropImageResult(new IRadioImageCheckedListener() {
@Override
public void cropAfter(Object t) {
Logger.i("裁剪完成");
}
@Override
public boolean isActivityFinish() {
Logger.i("返回false不关闭,返回true则为关闭");
return true;
}
});
RxGalleryFinal 是一款强大的图片选择器库,支持配置权限、注册Activity和自定义主题颜色。本文将引导您完成配置和使用步骤,包括添加依赖、设置权限和展示使用示例。
1536

被折叠的 条评论
为什么被折叠?



