很多項目要用到圖片選擇控件,每次都要寫一大堆邏輯。于是基于圖片選擇組件(PhotoPicker)封裝了一個控件PhotoUploadView做入。方便簡易臊泰,一鍵集成蛉加,幾句代碼就可以添加類似微信的圖片選擇控件了。下面介紹一下該控件有些什么特點以及怎么使用缸逃。先看圖:
先說依賴越走,可以在你項目的build.gradle添加依賴
compile 'com.github.BmobSnail:PhotoUploadView:1.0.0'
又或者在我的github下載庫下來再導入棚品。然后在你的布局用使用改控件,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" />```
看著這些屬性是不是很熟悉廊敌,沒錯铜跑!它就是基礎GridView的,所以完全可以當作GridView骡澈,GridView有的它也有锅纺,簡單易懂了吧。添加完這一步你就可以在布局看到圖一那樣有個加號的控件了肋殴。然后就是寫代碼的節(jié)奏了囤锉√沟埽控件可以選擇設置選擇原圖路徑還是壓縮后的路徑,因此就有了設置緩存路徑這一步在你的application中初始化一下緩存路徑官地,以后的壓縮后的圖片都緩存在這路徑底下
```java
String cache = StorageUtils.getOwnCacheDirectory(this, "Upload/photo").getAbsolutePath();
PictureLibrary.init(this, cache + "/");
緊接著就是使用了酿傍,控件執(zhí)行初始化init,之所以還要一次這樣初始化步驟是有項目需求是要編輯已發(fā)送成功的帶圖片的帖子驱入,那些圖也要顯示在選擇圖片控件上赤炒,所以有第五個參數(shù),獲取到圖片數(shù)據(jù)的集合后傳進去亏较,就能顯示那些網絡的圖片可霎,這時候可以刪除添加像普通那樣使用了。setShowMethod是使用那種風格顯示彈框
mPictureUploadView = (PictureUploadView) findViewById(R.id.pictureUploadView);
//第一個參數(shù)上下文
//第二個參數(shù)有CHAT(返回原圖路徑)宴杀,UPLOAD(返回壓縮路徑)
//第三個參數(shù)選擇個數(shù)//第四個參數(shù)默認為true(可不填)癣朗,false為不顯示上傳進度
//第五個參數(shù)默認為數(shù)據(jù)集合List(可不填)
mPictureUploadView.init(this, UploadPicHelper.UPLOAD, 3, true);
mPictureUploadView.setShowMethod(PictureUploadView.POPUPWINDOW);//POPUPWINDOW,DIALOGmPictureUploadView.setUploadCallBack(this);
設置一下回調方法并實現(xiàn)PictureUploadView.UploadCallBack并重寫兩個方法旺罢,添加的回調和刪除的回調旷余,mUploadMap為上傳成功之后保存成功的hashMap,mLocalMap為本地記錄添加和刪除的hashMap扁达,之后的上傳成功和上傳失敗要根據(jù)這個map的tag來決定哪個圖片的重發(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);
}```
最后再重寫一下這個onActivityResult,不重寫不會除非上面兩個回調方法跪解,所以就看不到有圖片添加
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
mPictureUploadView.setResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}```
只需要上面這幾步就可以實現(xiàn)像微信的那個圖片選擇控件一樣了炉旷,其它上傳回調的處理參考github里面的demo,有興趣的朋友可以試試叉讥,歡迎大家指正