Android圖片選擇器,仿微信的圖片選擇器的樣式和效果??蓹M豎屏切換顯示, 自定義配置,單選,多選,是否顯示拍照,material design風(fēng)格,單選裁剪,拍照裁剪,滑動翻頁預(yù)覽,雙擊放大,縮放
Github地址java版:https://github.com/wj576038874/PhotoSelector
Github地址kotlin版:https://github.com/wj576038874/PhotoSlectorKotlin
效果圖: 點擊下載APK進(jìn)行體驗

gif5新文件.gif
1、引入依賴
在工程的build.gradle添加如下配置
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
2、在Module的build.gradle在添加以下代碼
implementation 'com.winfo.photoselector:PhotoSelector:1.2.1'
3、說明
PhotoSelector的圖片加載是基于glide4.7.1實現(xiàn)的,可以自定義加載動畫,預(yù)覽照片使用 com.github.chrisbanes:PhotoView:2.1.3 裁剪使用的是com.github.yalantis:ucrop:2.2.2等開源庫,列表加載,翻頁預(yù)覽這里沒有使用viewpager使用的是recycleview
4、使用
在你的項目中的AndroidManifest文件中添加以下配置
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--注意這里的android:theme="@style/AppTheme" AppTheme一定要是NoActionbar類型的主題-->
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme" />
<activity
android:name="com.winfo.photoselector.ImageSelectorActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme" />
<activity
android:name="com.winfo.photoselector.PreviewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme" />
<activity
android:name="com.winfo.photoselector.RvPreviewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme" />
4、調(diào)起圖片選擇器
調(diào)用的是很簡單,只需要一句代碼,其他可選擇性配置
//單選
PhotoSelector.builder()
.setSingle(true)
.start(MainActivity.this, SINGLE_CODE);
//多選(最多9張)
PhotoSelector.builder()
.setShowCamera(true)//顯示拍照
.setMaxSelectCount(9)//最大選擇9 默認(rèn)9,如果這里設(shè)置為-1則是不限數(shù)量
.setSelected(images)//已經(jīng)選擇的照片
.setGridColumnCount(3)//列數(shù)
.setMaterialDesign(true)//design風(fēng)格
.setToolBarColor(ContextCompat.getColor(this, R.color.colorPrimary))//toolbar的顏色
.setBottomBarColor(ContextCompat.getColor(this, R.color.colorPrimary))//底部bottombar的顏色
.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimary))//狀態(tài)欄的顏色
.start(MainActivity.this, LIMIT_CODE);//當(dāng)前activity 和 requestCode,不傳requestCode則默認(rèn)為PhotoSelector.DEFAULT_REQUEST_CODE
//多選(不限數(shù)量)
PhotoSelector.builder()
.setMaxSelectCount(-1)//-1不限制數(shù)量
.setSelected(images)
.start(MainActivity.this, UN_LIMITT_CODE);
//單選后剪裁 裁剪的話都是針對一張圖片所以要設(shè)置setSingle(true)
PhotoSelector.builder()
.setSingle(true)//單選,裁剪都是單選
.setCrop(true)//是否裁剪
.setCropMode(PhotoSelector.CROP_RECTANG)//設(shè)置裁剪模式 矩形還是圓形
.setStatusBarColor(ContextCompat.getColor(this, R.color.colorAccent))
.setToolBarColor(ContextCompat.getColor(this, R.color.colorAccent))
.setBottomBarColor(ContextCompat.getColor(this, R.color.colorAccent))
.setStatusBarColor(ContextCompat.getColor(this, R.color.colorAccent))
.start(MainActivity.this, CROP_CODE);