1. 程式人生 > >Android自定義圖片選取器,類似微信樣式,自帶裁剪功能,適配Android7.0

Android自定義圖片選取器,類似微信樣式,自帶裁剪功能,適配Android7.0

不知道為什麼README文件在github上排版格式全亂了,所以寫個部落格當文件看吧

ImagePicker

這是一個Android使用的自定義圖片選擇器,眾所周知,Android碎片化問題嚴重,其中就包括圖片選擇的問題,呼叫系統相簿選擇圖片或裁剪圖片時反應慢,使用者體驗有種割裂感,所以自定義一個通用的圖片選擇器還是有點小必要的,最近也閒著沒事做就擼了一個,效果還行,喜歡的可以star或fork,發現問題的也請麻煩提交issue。

效果圖:









使用方法:

1.新增Gradle依賴:

dependencies{
         compile 'com.lwkandroid:ImagePicker:1.3.0'
}

注:該部落格不再更新,想了解最新版請檢視github或碼雲


2.程式碼中使用:

    //發起圖片選擇
    new ImagePicker.()
                   .pickType(ImagePickType.MUTIL) //設定選取型別(拍照ONLY_CAMERA、單選SINGLE、多選MUTIL)
                   .maxNum(9) //設定最大選擇數量(此選項只對多選生效,拍照和單選都是1,修改後也無效)
                   .needCamera(true) //是否需要在介面中顯示相機入口(類似微信那樣)
.cachePath(cachePath) //自定義快取路徑(拍照和裁剪都需要用到快取) .doCrop(1,1,300,300) //裁剪功能需要呼叫這個方法,多選模式下無效,引數:aspectX,aspectY,outputX,outputY .displayer(new GlideImagePickerDisplayer()) //自定義圖片載入器,預設是Glide實現的,可自定義圖片載入器 .start(this, REQUEST_CODE); //自定義RequestCode
//重寫Activity或Fragment中OnActivityResult() @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<ImageBean> resultList = data.getParcelableArrayListExtra(ImagePicker.INTENT_RESULT_DATA); } }

更詳細的使用樣式請參考github上的demo

注意事項

V1.0.1版本採用了自定義FileProvider的策略,所以無需修改清單檔案了,下面的內容可以無視了。

以下是V1.0.0版本適配Android7.0的策略(推薦直接使用V1.0.1):

由於Android7.0以上StrictMode策略的存在,本庫中拍照使用了FileProvider,如果引用該庫的工程中也使用到了FileProvider,為了避免清單檔案合併出錯,需要做出以下調整:

1.在主module的strings.xml中定義FileProvider的authorities,程式碼如下:

//ImagePicker中使用的名字就是app_fileprovider_authorities,這樣就可以覆蓋掉庫中的authorities
<string name="app_fileprovider_authorities">com.sample.fileprovider</string>

2.在主module中定義臨時授權目錄的xml檔案中新增該庫的授權目錄,程式碼如下:

<paths>
    <external-path
        name="imagepicker"
        path=""/>
</paths>

3.修改主module的AndroidManiFest檔案中FileProvider模組,程式碼如下:

<provider
      android:name="android.support.v4.content.FileProvider"
      android:authorities="@string/app_fileprovider_authorities"
      android:exported="false"
      android:grantUriPermissions="true"
      tools:replace="android:authorities"> //避免衝突
      <meta-data
          android:name="android.support.FILE_PROVIDER_PATHS"
          android:resource="@xml/fileprovider_path"
          tools:replace="android:resource"/> //避免衝突
</provider>

感謝

相關推薦

Android定義圖片選取類似樣式裁剪功能Android7.0

不知道為什麼README文件在github上排版格式全亂了,所以寫個部落格當文件看吧 ImagePicker 這是一個Android使用的自定義圖片選擇器,眾所周知,Android碎片化問題嚴重,其中就包括圖片選擇的問題,呼叫系統相簿選擇圖片或裁剪圖片時

Android 系統圖片裁剪功能7.0、8.0、對了還有小米手機)

前段時間寫了如何獲取相簿和拍照之後的照片並且進行顯示和上傳,這一次是如何進行圓形影象製作,經常看我寫的筆記的人會知道,我很懶。那麼我就懶的自定義了,目前需求就用原生的就好了,大神的輪子,我會在後面進行推薦。這篇筆記是依賴於:Android呼叫相簿、相機(相容6.0、7.0、8.0) 文

Android 實現定義安全數字鍵盤(仿

背景 大部分的金融App會對預設的數字鍵盤進行處理,以實現自定義的數字安全鍵盤。基於此,本文對對微信數字鍵盤樣式進行了仿寫,實現了一套自定義的數字安全鍵盤(支援隨機數字分佈)。 一.圖示效果 二.需要考慮的問題 佈局的實現方式; demo中使用了popupw

android中關於圖片分享到QQ或者朋友圈及其他(免SDK)

 最近又做了一個關於圖片分享到朋友圈的一個小功能,起先想到的是要新增比如QQ 或者微信以及其他工具的API,但是很麻煩,還要申請一些亂七八糟的東西並且得通過,才能用。 於是就在網上找一些關於圖片分享的資料,僅供參考(親測可用),,僅限圖片的分享,但是免去了上面所說的那些繁瑣

Android中ListView實現圖文並列並且定義分割線(完善仿APP)

昨天的(今天凌晨)的博文《Android中Fragment和ViewPager那點事兒》中,我們通過使用Fragment和ViewPager模仿實現了微信的佈局框架。今天我們來通過使用ListView實現其中聯絡人一欄的基本檢視,效果如下: 要實現上圖的效果,我們要用到兩

小程式類似點選語音播放效果不會互相干擾播放狀態

類似平常微信語音聊天的效果…. 根據開發的需求,先理清一下思路,點選語音播放與暫停/停止,切換下一個語音等; 小程式對於audio的元件的一些api方法已經不支援了,詳情可以參看:微信小程式audio元件文件 嗯嗯,這下子,該怎麼辦呢? 就如上面

最近i學習卡券中的會員卡功能弄清楚不容易 分享一下。

jsb 優惠 服務員 can inf 分享 PQ tle 功能 創建會員卡接口 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025283 【4.1 創建會員卡接口】 { "card":

Android進階封裝之一個類實現相容Android 6.0許可權、Android7.0 拍照!

Android進階封裝之“史無前例”一個類實現相容Android 6.0許可權、適配Android 拍照7.0: 相機與相簿上傳圖片就用我好啦! 一、前言。 本篇部落格從基本的AndroidN開始說怎麼適配其拍照,其與7.0以下有何區別

android studio android7.0 android 6.0拍照呼叫系統裁剪工具實現頭像上傳功能

之前在做新專案是把以前的上傳頭像功能複製過來,執行發現閃退了,當時就是各種排除,然後用模擬器執行是沒問題的,但是用真機執行就報錯,然後各種篩查,還是無果,然後我就想是不是手機問題手機不相容,於是我用相同型號的手機測試發現同樣可以使用就我的手機不能使用,當時就陷入沉思,唉是不

ueditor 編輯定義圖片上傳

action () scree val ech idt tof height 使用 <div> <h1>完整demo</h1> <form method="post" name="form">

Android 定義數字選擇可以根據自己的需求更改

實現效果如下: 還是以往的套路,先把那些專案所需要的給展示出來。 values下的資料夾,attrs.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styl

Android定義圖片圓角增加漸變陰影

自定義圖片,切圓角、圓形,增加漸變顏色陰影 一、先上效果圖 二、GitHub 三、思路 1、圖片切成圓角(圓形) 2、繪製一個帶有漸變陰影的圖形 3、融合圓角圖片和陰影圖形 四、實現(以下是以圓角為例,圓形的類似)

Android ListView三級聯動實現定義地址選擇

說到地址選擇器,好多小夥伴第一印象就是——wheelView~這玩意確實挺好用的^(* ̄(oo) ̄)^! 然而悲劇的故事發生了,傲嬌的老闆不喜歡wheelView那種選中條不動的效果 ~(⊙o⊙)! 好吧,其實是老闆不知道從哪個忘記名字的App看到這種效果,

實現類似表情包橫向滾動翻頁的功能運用UICollectionView定義UICollectionViewFlowLayoutcell左右排版 支持多組Cell實現。

hang sig idt 滾動翻頁 功能 details assign 實現類 targe 結合:https://blog.csdn.net/qiuhaozhou/article/details/54582741 下面是我所要的樣式的實現的代碼: .h文件如下: #i

Tinymce 編輯添加定義圖片管理插件

msg rim pre result field let list rep descend 在使用Tinymce的過程中需要用到圖片上傳功能,而提供的上傳插件在上傳文件後是給了一個連接地址,就想用戶需要什麽圖片,不能用最直觀的方式表現出來麽! 雖然官網上也有一個文件管理的插

android基礎--定義圖片剪輯頭像

裁剪介面效果圖 點選相簿後返回的圖片效果圖 主控制類程式碼,如下: 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 4

Android中RxJava使用9----定義圖片快取框架

操作符:concat 不交錯的發射兩個或多個Observable的發射物 原理: 圖片快取框架,原理 1)檢查圖片是否在記憶體中快取 2)如果不在,檢查圖片是否在檔案中快取 3)如果不在,則從網路上拿圖片 下面程式碼只說明原理,真正實現功能,下載原始碼 1、在

Springboot中定義springmvc攔截;HandlerInterceptor中preHandlepostHandleafterCompletion解析

要實現自定義HandlerInterceptor 。通過 WebMvcConfigurer 的實現類屬性注入,完成springboot自定義攔截 自定義一個攔截器; package com.baidu.

Android使用Vitamio框架定義視訊播放

        做過Android視訊播放器的碼農們都或多或少知道自帶的VideoView用著沒有那麼順心。需要處理很多東西。於是就各種度娘、Google。終於皇天不負苦心人。找到了一個卻又不大符合。無奈,想自己動手寫吧!又浪

Android定義視訊播放(網路/本地)

最近因公司專案要求需要寫一個播放器,自帶的又不太好用,也不太好看。自能自定義啦。查看了很多資料,都沒有完善的,還好得以為前輩的指點得以完成,感謝Yang。本篇裡面我有可能有些地方寫得不好(都附上了註釋)。希望各路大神指點,虛心受教。 先來個圖(原始碼在後面附上) 視訊列表裡面