MultiImageSelector 仿微信多圖片選擇(改進版)

簡介

MultiImageSelector 輕量級的多圖片選擇工具段磨,適合多張圖片上傳的場景广鳍。

改進點

  • 兼容7.0以上拍照
  • 新增是否主動選擇照片的功能
  • 動態(tài)設置照片水印

為何要改進

  • 7.0以后android 在拍照時返回的“uri”這塊做了很大的改進
  • 有這樣的奇葩需求:
    1.上傳多張照片,具體多少張不確定蝶溶,用戶根據(jù)當時場景自己隨意定嗜历。
    2.部分用戶要求可以從“相冊”里主動去選照片宣渗,部分用戶要求不能從“相冊”里選照片。(用戶來自不同市區(qū)梨州,開發(fā)時共用同一套模板痕囱,對于不同用戶稍加修改項目模板,打算寫一個開關出來暴匠,于是就誕生了是否主動選擇照片的功能)
    3.加水印防止用戶提前拍好照片鞍恢,后期使用。

效果預覽

image.png

進入項目

  • gradle 配置
    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
   
    compile 'com.zhy:base-rvadapter:3.0.3' //萬能適配器
    compile 'com.zhy:base-adapter:3.0.3'  //萬能適配器
    compile 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.github.stf-android:MultiImageSelector:1.0.1'  // 圖片選擇器
  • Manifest 配置
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
          
         <!--兼容7.0以上拍照-->
         <!-- authorities:是該項目的包名+provider
        <!- grantUriPermissions:必須是true每窖,表示授予 URI 臨時訪問權限-->
        <!--exported:必須是false-->
        <!--resource:中的@xml/file_paths是我們接下來要在資源文件目錄下添加的文件 -->
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

  • file_paths.xml文件
    在app下res目錄下新建xml文件夾帮掉,然后再xml中新建 file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--path:需要臨時授權訪問的路徑(.代表在相機調(diào)用時候訪問的是所有路徑,而文件寫入時訪問的路徑是Android/data/com.ijuyin.prints.news/)-->
    <!--name: 是你為設置的這個訪問路徑起的名字-->
    <paths>
        <external-path
            name="camera_photos"
            path="." />
        <external-path
            name="files_root"
            path="Android/data/com.ijuyin.prints.news/" />
        <external-path
            name="external_storage_root"
            path="." />
    </paths>
</resources>
  • MultiImageSelector 的調(diào)用
private void startCamera() {
         MultiImageSelector mModeType = null;
        if (mMode) {// 拍單張還是多張
            mModeType = getMultiImageSelectorOrigin().multi();// 多選
        } else {
            mModeType = getMultiImageSelectorOrigin().single(); // 單選
        }

        String trim = waterMrakEdit.getText().toString().trim();
        if (TextUtils.isEmpty(trim)) {
            mModeType.start(this, mCoder);// 開始拍照
        } else {
            WaterMarkBean waterMarkBean = mModeType.getWaterMarkBean(); // 設置水印的屬性
            waterMarkBean.setTextSize(28);
            waterMarkBean.setColor("#d4237a");
            waterMarkBean.setAntiAlias(true);
            waterMarkBean.setAlpha(180);
            waterMarkBean.setRotate(-30);
            waterMarkBean.setMark(trim);
            mModeType.setWaterMarkStyle(waterMarkBean).start(this, mCoder); // 開始拍照
        }
    }

private MultiImageSelector getMultiImageSelectorOrigin() {
      return MultiImageSelector.create()
                .showCamera(mShowCamera) // 是否顯示相機. 默認為顯示
                .count(mPhotoNumSp) // 最大選擇圖片數(shù)量, 默認為9. 只有在選擇模式為多選時有效
                .selectPhoto(mSelectorPhoto) // 是否主動從相冊中選擇照片
                .setWaterMarkPrivacy(mWaterMarkVis)  // 是否添加水印
                .origin(listPhotoPath);//返回照片集合的路徑
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == mCoder) {
            if (resultCode == RESULT_OK) { // 照片的路徑集合返回
                listPhotoPath = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
                setGridViewData();
            }
        }
    }

說明:

  • 關于已經(jīng)顯出的照片的增加窒典,移除蟆炊,更換的問題
    遵循是否主動在相冊中選擇照片的規(guī)則下
    1.主動選擇
    單選模式:拍照進行替換照片,不能移除瀑志。
    多選模式:拍照增加替換或者點擊某張照片進行增加涩搓,移除。
    2.不主動選擇(默認選中)
    單選模式:只能拍照更換照片(默認選中該照片)劈猪。
    多選模式:拍照(默認選中最近幾次拍的照片)昧甘,可長按某張照片移除它。
    除拍照外其他操作最后點擊“完成”即可战得。
  • 添加 水印且不設置水印內(nèi)容時充边,顯示當前拍照時間

項目源碼

stf-android/MultiImageSelector

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贡避,隨后出現(xiàn)的幾起案子痛黎,更是在濱河造成了極大的恐慌,老刑警劉巖刮吧,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湖饱,死亡現(xiàn)場離奇詭異,居然都是意外死亡杀捻,警方通過查閱死者的電腦和手機井厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來致讥,“玉大人仅仆,你說我怎么就攤上這事」父ぃ” “怎么了墓拜?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長请契。 經(jīng)常有香客問我咳榜,道長夏醉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任涌韩,我火速辦了婚禮畔柔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘臣樱。我一直安慰自己靶擦,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布雇毫。 她就那樣靜靜地躺著玄捕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘴拢。 梳的紋絲不亂的頭發(fā)上桩盲,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音席吴,去河邊找鬼赌结。 笑死,一個胖子當著我的面吹牛孝冒,可吹牛的內(nèi)容都是我干的柬姚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼庄涡,長吁一口氣:“原來是場噩夢啊……” “哼量承!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起穴店,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤撕捍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泣洞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忧风,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年球凰,在試婚紗的時候發(fā)現(xiàn)自己被綠了狮腿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡呕诉,死狀恐怖缘厢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甩挫,我是刑警寧澤贴硫,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站伊者,受9級特大地震影響夜畴,放射性物質(zhì)發(fā)生泄漏拖刃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一贪绘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧央碟,春花似錦税灌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洛勉,卻和暖如春粘秆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背收毫。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工攻走, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人此再。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓昔搂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親输拇。 傳聞我的和親對象是個殘疾皇子摘符,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_x閱讀 15,968評論 3 119
  • 今天王琳做了許多嘗試策吠,比如她給我講了一段營養(yǎng)學逛裤,讓我從結(jié)構化的角度來提意見。她講的很好猴抹,娓娓道來带族,有些點講得特別生...
    細雨濕蒼苔閱讀 217評論 2 6
  • 【題記】 夕陽,球場洽糟,梧桐樹和肆意揮灑汗水的少年炉菲,燈光,單車坤溃,校服和長長的柏油馬路拍霜,課桌,青年文摘薪介,儲物柜和那些男...
    張小等童鞋就是死心眼兒閱讀 232評論 0 0