android多圖選擇器 圖片/視頻 單選or多選,以及視頻錄制。

github代碼地址

功能特點(diǎn):

??1.適配android6.0+系統(tǒng)

??2.解決部分機(jī)型裁剪閃退問(wèn)題

??3.解決圖片過(guò)大oom閃退問(wèn)題

??4.動(dòng)態(tài)獲取系統(tǒng)權(quán)限,避免閃退

??5.支持相片or視頻的單選和多選

??6.支持裁剪比例設(shè)置,如常用的?1:1、3:4、3:2、16:9?默認(rèn)為圖片大小

??7.支持視頻預(yù)覽

??8.支持gif圖片

??9.支持.webp格式圖片

??10.支持一些常用場(chǎng)景設(shè)置:如:是否裁剪、是否預(yù)覽圖片、是否顯示相機(jī)等

??11.新增自定義主題設(shè)置

??12.新增圖片勾選樣式設(shè)置

??13.新增圖片裁剪寬高設(shè)置

??14.新增圖片壓縮處理

??15.新增錄視頻最大時(shí)間設(shè)置

??16.新增視頻清晰度設(shè)置

??17.新增QQ選擇風(fēng)格,帶數(shù)字效果

??18.新增自定義?文字顏色?背景色讓風(fēng)格和項(xiàng)目更搭配

??19.新增多圖裁剪功能

??20.新增LuBan多圖壓縮

??21.新增單獨(dú)拍照功能

??22.新增壓縮大小設(shè)置

??23.新增Luban壓縮檔次設(shè)置

那些遇到拍照閃退問(wèn)題的同學(xué),請(qǐng)記得看清下面適配6.0的配置~

重要的事情說(shuō)三遍記得添加權(quán)限

??

??

??

注:適配android6.0以上拍照問(wèn)題,請(qǐng)?jiān)贏ndroidManifest.xml中添加標(biāo)簽

???android:name="android.support.v4.content.FileProvider"

???android:authorities="${applicationId}.provider"

???android:exported="false"

???android:grantUriPermissions="true">


?????????android:name="android.support.FILE_PROVIDER_PATHS"

?????????android:resource="@xml/file_paths"?/>

集成步驟

方式一 compile引入

dependencies?{

????compile?'com.github.LuckSiege.PictureSelector:picture_library:v1.4.1'

}

方式二 maven引入

step 1.

???????

???????jitpack.io

https://jitpack.io



step 2.

??????com.github.LuckSiege.PictureSelector

??????picture_library

??????v1.4.1

項(xiàng)目根目錄 ?

allprojects?{

???repositories?{

??????jcenter()

??????maven?{?url?'https://jitpack.io'?}

???}

}

常見錯(cuò)誤*

?問(wèn)題一:

?rxjava沖突:在app?build.gradle下添加

?packagingOptions?{

???exclude?'META-INF/rxjava.properties'

?}??


?問(wèn)題二:

?java.lang.NullPointerException:?

?Attempt?to?invoke?virtual?method?'android.content.res.XmlResourceParser?

?android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,?java.lang.String)'

?on?a?null?object?reference


?application下添加如下節(jié)點(diǎn):



??????android:name="android.support.v4.content.FileProvider"

??????android:authorities="${applicationId}.provider"

??????android:exported="false"

??????android:grantUriPermissions="true">


?????????android:name="android.support.FILE_PROVIDER_PATHS"

?????????android:resource="@xml/file_paths"?/>


注意:如已添加其他sdk或項(xiàng)目中已使用過(guò)provider節(jié)點(diǎn),

[請(qǐng)參考我的博客](http://blog.csdn.net/luck_mw/article/details/54970105)的解決方案


問(wèn)題三:

PhotoView?庫(kù)沖突,可以刪除自己項(xiàng)目中引用的,Picture_library中已經(jīng)引用過(guò),或引用com.commit451:PhotoView:1.2.4版本

相冊(cè)啟動(dòng)構(gòu)造方法

FunctionOptions?options?=?new?FunctionOptions.Builder()

????????.setType(selectType)?//?圖片or視頻?FunctionConfig.TYPE_IMAGE??TYPE_VIDEO

????????.setCropMode(copyMode)?//?裁剪模式?默認(rèn)、1:1、3:4、3:2、16:9

????????.setCompress(isCompress)?//是否壓縮

????????.setEnablePixelCompress(true)?//是否啟用像素壓縮

????????.setEnableQualityCompress(true)?//是否啟質(zhì)量壓縮

????????.setMaxSelectNum(maxSelectNum)?//?可選擇圖片的數(shù)量

????????.setSelectMode(selectMode)?//?單選?or?多選

????????.setShowCamera(isShow)?//是否顯示拍照選項(xiàng)?這里自動(dòng)根據(jù)type?啟動(dòng)拍照或錄視頻

????????.setEnablePreview(enablePreview)?//?是否打開預(yù)覽選項(xiàng)

????????.setEnableCrop(enableCrop)?//?是否打開剪切選項(xiàng)

????????.setPreviewVideo(isPreviewVideo)?//?是否預(yù)覽視頻(播放)?mode?or?多選有效

????????.setCheckedBoxDrawable(checkedBoxDrawable)

????????.setRecordVideoDefinition(FunctionConfig.HIGH)?//?視頻清晰度

????????.setRecordVideoSecond(60)?//?視頻秒數(shù)

????????.setGif(false)//?是否顯示gif圖片,默認(rèn)不顯示

????????.setCropW(cropW)?//?cropW-->裁剪寬度?值不能小于100??如果值大于圖片原始寬高?將返回原圖大小

????????.setCropH(cropH)?//?cropH-->裁剪高度?值不能小于100?如果值大于圖片原始寬高?將返回原圖大小

????????.setMaxB(maxB)?//?壓縮最大值?例如:200kb??就設(shè)置202400,202400?/?1024?=?200kb左右

????????.setPreviewColor(previewColor)?//預(yù)覽字體顏色

????????.setCompleteColor(completeColor)?//已完成字體顏色

????????.setPreviewBottomBgColor(previewBottomBgColor)?//預(yù)覽底部背景色

????????.setBottomBgColor(bottomBgColor)?//圖片列表底部背景色

????????.setGrade(Luban.THIRD_GEAR)?//?壓縮檔次?默認(rèn)三檔

????????.setCheckNumMode(isCheckNumMode)

????????.setCompressQuality(100)?//?圖片裁剪質(zhì)量,默認(rèn)無(wú)損

????????.setImageSpanCount(4)?//?每行個(gè)數(shù)

????????.setSelectMedia(selectMedia)?//?已選圖片,傳入在次進(jìn)去可選中,不能傳入網(wǎng)絡(luò)圖片

????????.setCompressFlag(compressFlag)?//?1?系統(tǒng)自帶壓縮?2?luban壓縮

????????.setCompressW(compressW)?//?壓縮寬?如果值大于圖片原始寬高無(wú)效

????????.setCompressH(compressH)?//?壓縮高?如果值大于圖片原始寬高無(wú)效

????????.setThemeStyle(themeStyle)?//?設(shè)置主題樣式

????????.create();

啟動(dòng)相冊(cè)并拍照

?PictureConfig.getInstance().init(options).openPhoto(mContext,?resultCallback);


?或默認(rèn)配置

?PictureConfig.getInstance().openPhoto(mContext,?resultCallback);

單獨(dú)啟動(dòng)拍照或視頻 根據(jù)type自動(dòng)識(shí)別

?PictureConfig.getInstance().init(options).startOpenCamera(mContext,?resultCallback);


?或默認(rèn)配置

?PictureConfig.getInstance().startOpenCamera(mContext,?resultCallback);

預(yù)覽圖片

?PictureConfig.getInstance().externalPicturePreview(mContext,?position,?selectMedia);

預(yù)覽視頻

PictureConfig.getInstance().externalPictureVideo(mContext,?selectMedia.get(position).getPath());

圖片回調(diào)完成結(jié)果返回

??private?PictureConfig.OnSelectResultCallback?resultCallback?=?new?PictureConfig.OnSelectResultCallback()?{

????????@Override

????????public?void?onSelectSuccess(List?resultList)?{

????????????selectMedia?=?resultList;

????????????Log.i("callBack_result",?selectMedia.size()?+?"");

????????????LocalMedia?media?=?resultList.get(0);

????????????if?(media.isCut()?&&?!media.isCompressed())?{

????????????????//?裁剪過(guò)

????????????????String?path?=?media.getCutPath();

????????????}?else?if?(media.isCompressed()?||?(media.isCut()?&&?media.isCompressed()))?{

????????????????//?壓縮過(guò),或者裁剪同時(shí)壓縮過(guò),以最終壓縮過(guò)圖片為準(zhǔn)

????????????????String?path?=?media.getCompressPath();

????????????}?else?{

????????????????//?原圖地址

????????????????String?path?=?media.getPath();

????????????}

????????????if?(selectMedia?!=?null)?{

????????????????adapter.setList(selectMedia);

????????????????adapter.notifyDataSetChanged();

????????????}

????????}

????};

更新日志:

版本 v1.4.1

1.修復(fù)單選快速點(diǎn)擊重復(fù)bug

2.重命名string資源文件

========================================================

歷史版本***

版本 v1.4.0

1.減小引入大小

版本 v1.3.9

1.修改相冊(cè)啟動(dòng)方式

2.修復(fù).webp格式圖片壓縮后后綴變?yōu)?jpg格式問(wèn)題

3.修復(fù)多圖裁剪快速點(diǎn)擊,結(jié)果返回為空問(wèn)題

4.修復(fù)快速點(diǎn)擊啟動(dòng)相冊(cè)重復(fù)問(wèn)題

5.將activity通信由廣播改為EventBus3.0

6.修復(fù)多圖裁剪壓縮bug

項(xiàng)目使用第三方庫(kù):

1.裁剪使用ucrop庫(kù)

2.eventbus:3.0.0'

3.glide:3.7.0

4.rxjava:2.0.5

5.rxandroid:2.0.1

6.okhttp:3.2.0

7.PhotoView:1.2.4

8.Luban

兼容性測(cè)試:

騰訊優(yōu)測(cè)-深度測(cè)試-通過(guò)率達(dá)到100%

演示效果:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容