Android 圖片選擇器。充分自由定製,極大程度簡化使用,支持圖庫多選/圖片預覽/單選/照片裁剪/拍照/自定義圖片加載方式/自定義色調/沉浸式狀態欄
依賴
dependencies {
compile 'com.yuyh.imgsel:library:2.0.2'
}
版本
V2.0.2 支持單獨跳轉拍照,一些優化
注意事項
- 圖片加載由調用者自定義一個ImageLoader(詳見使用方式), 可通過Glide、Picasso等方式加載
- 用戶自行選擇加載方式,所以加載圖片不受本庫控制,若出現OOM等問題,可能需要在displayImage裏進行壓縮處理等
- 有好的建議可以提issue, 謝謝~~
使用
初始化
// 自定義圖片加載器
ISNav.getInstance().init(new ImageLoader() {
@Override
public void displayImage(Context context, String path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
});
直接拍照
ISCameraConfig config = new ISCameraConfig.Builder()
.needCrop(true) // 裁剪
.cropSize(1, 1, 200, 200)
.build();
ISNav.getInstance().toCameraActivity(this, config, REQUEST_CAMERA_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CAMERA_CODE && resultCode == RESULT_OK && data != null) {
String path = data.getStringExtra("result"); // 圖片地址
tvResult.append(path + "\n");
}
}
圖片選擇器
// 自由配置選項
ISListConfig config = new ISListConfig.Builder()
// 是否多選, 默認true
.multiSelect(false)
// 是否記住上次選中記錄, 僅當multiSelect爲true的時候配置,默認爲true
.rememberSelected(false)
// “確定”按鈕背景色
.btnBgColor(Color.GRAY)
// “確定”按鈕文字顏色
.btnTextColor(Color.BLUE)
// 使用沉浸式狀態欄
.statusBarColor(Color.parseColor("#3F51B5"))
// 返回圖標ResId
.backResId(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_mtrl_am_alpha)
// 標題
.title("圖片")
// 標題文字顏色
.titleColor(Color.WHITE)
// TitleBar背景色
.titleBgColor(Color.parseColor("#3F51B5"))
// 裁剪大小。needCrop爲true的時候配置
.cropSize(1, 1, 200, 200)
.needCrop(true)
// 第一個是否顯示相機,默認true
.needCamera(false)
// 最大選擇圖片數量,默認9
.maxNum(9)
.build();
// 跳轉到圖片選擇器
ISNav.getInstance().toListActivity(this, config, REQUEST_LIST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 圖片選擇結果回調
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
List<String> pathList = data.getStringArrayListExtra(ImgSelActivity.INTENT_RESULT);
for (String path : pathList) {
tvResult.append(path + "\n");
}
}
}