简介
前面讲的差不多都是base层面的,今天介绍的是基于base层,实现的一个相册选择器。你可能会说相册选择器有什么难的,github上最多的开源项目估计就是它了。接下来我罗列几条这个album的优点:
- 默认界面风格仿微信,支持高度自定义。
- 代码简洁,高度解耦
- 支持模块化调用
- 支持丰富动画、丰富的手势。(哇,几乎没见过这么丰富动画的图片选择库,底层采用gestureview实现)
- 支持图片自定义剪裁
- 使用超方便,兼容性强,扩展性强
示例
当然我其实最喜欢就是这个手势动画效果,下面介绍一下基本用法.
//TODO 路由方式 在Fragment调起Activity后,setResult()无效
RouterHelper.from((Activity) mContext)
.put("camera", false)
.put("num", 8)
.to("/album/ui/AlbumWallActivity", 1002);
可以设置是否显示相机、选择图片的数量等基本参数。
还可以选择是否裁剪、以及裁剪大小(宽高)、裁剪框形状(圆形、方形)例如:
Intent intent2 = new Intent(mContext, AlbumWallActivity.class);
intent2.putExtra("camera", true);
intent2.putExtra("crop", true);
startActivityForResult(intent2, 1002);
更多的参数和key的字段说明,请参考album中的Config基本配置。
无论是选择还是剪裁完成后,都会走到onActivityForResult方法中。例如:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) {
return;
}
switch (requestCode) {
case 1002: //图库
ArrayList list = data.getStringArrayListExtra("albumResult");
this.list.clear();
this.list.addAll(list);
rlvPreView.getAdapter().notifyDataSetChanged();
break;
}
}
通过albumResult取到的是图片在手机中的完整路径。
快速开发
album支持多种方式调用,同时在使用album时,需要优先引入base模块。使用的album的优点是不同手机都能获得相同的图库选择体验,相对于系统图库选择、图库剪裁,UI界面自由度高。
最后附上truck快速开发交流qq群:698442320