最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android仿微信圖片選擇器

 更新時(shí)間:2016年11月29日 10:18:29   作者:BmobSnail  
這篇文章主要為大家詳細(xì)介紹了Android仿微信圖片選擇器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

很多項(xiàng)目要用到圖片選擇控件,每次都要寫一大堆邏輯。于是基于圖片選擇組件(PhotoPicker)封裝了一個(gè)控件PhotoUploadView。方便簡易,一鍵集成,幾句代碼就可以添加類似微信的圖片選擇控件了。下面介紹一下該控件有些什么特點(diǎn)以及怎么使用。先看圖:

效果如上圖,點(diǎn)擊加號(hào)彈出選擇框,目前提供了兩種形式,一個(gè)如圖所見的PopupWindow,另一個(gè)是MaterialDialog,選擇拍照或者從圖庫獲取,從圖庫獲取后就進(jìn)入圖二,選擇完之后就圖三或圖四這里因?yàn)楹芏囗?xiàng)目需要不一樣,所以特別封裝了:圖三的情況:上傳成功之后進(jìn)度提示隱藏和失敗重發(fā)提示隱藏,或者是批量上傳不需要進(jìn)度提示的和失敗重發(fā)的。圖四的情況:選擇完后遍歷上傳,有可能出現(xiàn)某一張上傳失敗。點(diǎn)擊圖中的重發(fā)按鈕觸發(fā)重發(fā)的事件當(dāng)然如果你覺得刪除和重發(fā)的icon難看,完全可以自己取代替換它,刪除的圖標(biāo)叫icon_photo_view_cancel,重發(fā)的圖標(biāo)叫icon_photo_view_resend,只需要按照這個(gè)命名,然后放在自己項(xiàng)目底下的mipmap包,控件會(huì)自動(dòng)替換,不需要去set什么。

先說依賴,可以在你項(xiàng)目的build.gradle添加依賴compile 'com.github.BmobSnail:PhotoUploadView:1.0.0'
又或者在我的github下載庫下來再導(dǎo)入。然后在你的布局用使用改控件,PictureUploadView

<upload.view.PictureUploadView 
 android:id="@+id/pictureUploadView" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:layout_margin="@dimen/partition_normal" 
 android:horizontalSpacing="2dp" 
 android:numColumns="3" 
 android:scrollbars="none" 
 android:verticalSpacing="1dp" />

看著這些屬性是不是很熟悉,沒錯(cuò)!它就是基礎(chǔ)GridView的,所以完全可以當(dāng)作GridView,GridView有的它也有,簡單易懂了吧。添加完這一步你就可以在布局看到圖一那樣有個(gè)加號(hào)的控件了。然后就是寫代碼的節(jié)奏了??丶梢赃x擇設(shè)置選擇原圖路徑還是壓縮后的路徑,因此就有了設(shè)置緩存路徑這一步在你的application中初始化一下緩存路徑,以后的壓縮后的圖片都緩存在這路徑底下

String cache = StorageUtils.getOwnCacheDirectory(this, "Upload/photo").getAbsolutePath();
PictureLibrary.init(this, cache + "/");

緊接著就是使用了,控件執(zhí)行初始化init,之所以還要一次這樣初始化步驟是有項(xiàng)目需求是要編輯已發(fā)送成功的帶圖片的帖子,那些圖也要顯示在選擇圖片控件上,所以有第五個(gè)參數(shù),獲取到圖片數(shù)據(jù)的集合后傳進(jìn)去,就能顯示那些網(wǎng)絡(luò)的圖片,這時(shí)候可以刪除添加像普通那樣使用了。setShowMethod是使用那種風(fēng)格顯示彈框

mPictureUploadView = (PictureUploadView) findViewById(R.id.pictureUploadView);
//第一個(gè)參數(shù)上下文
//第二個(gè)參數(shù)有CHAT(返回原圖路徑),UPLOAD(返回壓縮路徑)
//第三個(gè)參數(shù)選擇個(gè)數(shù)//第四個(gè)參數(shù)默認(rèn)為true(可不填),false為不顯示上傳進(jìn)度
//第五個(gè)參數(shù)默認(rèn)為數(shù)據(jù)集合List(可不填)
mPictureUploadView.init(this, UploadPicHelper.UPLOAD, 3, true);
mPictureUploadView.setShowMethod(PictureUploadView.POPUPWINDOW);//POPUPWINDOW,DIALOGmPictureUploadView.setUploadCallBack(this);

設(shè)置一下回調(diào)方法并實(shí)現(xiàn)PictureUploadView.UploadCallBack并重寫兩個(gè)方法,添加的回調(diào)和刪除的回調(diào),mUploadMap為上傳成功之后保存成功的hashMap,mLocalMap為本地記錄添加和刪除的hashMap,之后的上傳成功和上傳失敗要根據(jù)這個(gè)map的tag來決定哪個(gè)圖片的重發(fā)按鈕該顯示還是隱藏的。

private Map<String, String> mUploadMap, mLocalMap; 

//添加圖片 
@Override 
public void onAddCallback(String path, String tag) { 
 mLocalMap.put(tag, path); 
 //upload(path, tag); 
} 

//刪除圖片 
@Override 
public void onRemoveCallback(String tag) { 
 mUploadMap.remove(tag); 
 mLocalMap.remove(tag);
}

最后再重寫一下這個(gè)onActivityResult,不重寫不會(huì)除非上面兩個(gè)回調(diào)方法,所以就看不到有圖片添加

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
 if (resultCode == RESULT_OK) { 
 mPictureUploadView.setResult(requestCode, resultCode, data); 
 } 
super.onActivityResult(requestCode, resultCode, data); 
}

只需要上面這幾步就可以實(shí)現(xiàn)像微信的那個(gè)圖片選擇控件一樣了,其它上傳回調(diào)的處理參考github里面的demo,有興趣的朋友可以試試,歡迎大家指正。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解

    在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解

    這篇文章主要介紹了在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Android仿IOS自定義AlertDialog提示框

    Android仿IOS自定義AlertDialog提示框

    本篇文章主要介紹了Android仿IOS自定義AlertDialog對(duì)話框,主要介紹了圓角AlertDialog對(duì)話框,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • Android實(shí)現(xiàn)定制桌面的方法

    Android實(shí)現(xiàn)定制桌面的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)定制桌面的方法,較為詳細(xì)的分析了Android定制桌面的相關(guān)注意事項(xiàng)及具體技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 關(guān)于Android多渠道打包的進(jìn)階知識(shí)

    關(guān)于Android多渠道打包的進(jìn)階知識(shí)

    前一篇文章主要介紹了關(guān)于Android程序的多渠道打包方法,這一篇文章介紹了多渠道打包的進(jìn)階知識(shí),還不會(huì)的同學(xué)快進(jìn)來學(xué)習(xí)下吧,建議收藏以防迷路
    2021-08-08
  • OpenGL ES著色器使用詳解(二)

    OpenGL ES著色器使用詳解(二)

    這篇文章主要為大家詳細(xì)介紹了OpenGL ES著色器的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Flutter使用AnimationController實(shí)現(xiàn)控制動(dòng)畫

    Flutter使用AnimationController實(shí)現(xiàn)控制動(dòng)畫

    這篇文章主要想帶大家來嘗試一下Flutter如何使用AnimationController實(shí)現(xiàn)一個(gè)拖拽圖片,然后返回原點(diǎn)的動(dòng)畫,感興趣的可以了解一下
    2023-05-05
  • Android Jetpack系列之App Startup使用詳解

    Android Jetpack系列之App Startup使用詳解

    這篇文章主要為大家介紹了Android Jetpack系列之App Startup使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Android 獲得View寬高的幾種方式總結(jié)

    Android 獲得View寬高的幾種方式總結(jié)

    這篇文章主要介紹了Android 獲得View寬高的幾種方式總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android Studio升級(jí)4.1.1后各種錯(cuò)誤和解決方案

    Android Studio升級(jí)4.1.1后各種錯(cuò)誤和解決方案

    這篇文章主要介紹了Android Studio升級(jí)4.1.1后各種錯(cuò)誤和解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Android文件操作工具類詳解

    Android文件操作工具類詳解

    這篇文章主要為大家詳細(xì)介紹了Android文件操作工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論

永清县| 荥阳市| 安康市| 乾安县| 嫩江县| 公主岭市| 朝阳市| 尼木县| 淮阳县| 平定县| 南投市| 上饶市| 泾川县| 浏阳市| 集安市| 仁化县| 星座| 禹城市| 山丹县| 宁阳县| 卓资县| 高密市| 山阳县| 通化市| 泰和县| 雅江县| 石景山区| 镇雄县| 阿克陶县| 福建省| 天门市| 黄冈市| 玉林市| 乐至县| 会理县| 曲松县| 周宁县| 崇义县| 固镇县| 肥东县| 资溪县|