Android MultiPhotoContainer多圖選擇容器 快速釋出動態,意見反饋
這是我第一次在CSDN上發表部落格,11年註冊過CSDN,不過基本都是copy他人的資源。在這裡發現很多牛人,也學到很多知識,近來不忙,常常思緒萬千,其中不乏關於Android開發的想法。
我認為優秀的程式設計師應該是想方設法讓自己越來越懶,或者讓團隊更閒,這樣就有更多時間去學習新的知識,或者去發展自己的愛好。這樣就要求程式碼的封裝要好,靈活,易用,健壯,這個是好的程式碼最基本的特點,什麼叫極簡?就是隻要聊聊幾行程式碼,就能實現一個複雜的功能,而且不用擔心美觀和效能的問題。
MultiPhotoContainer是一個圖片選擇容器,適用於釋出動態,意見反饋,釋出需求等,相簿展示頁面是在github上lovetuzitong/MultiImageSelector基礎上做的,MultiImageSelector這個開源庫非常不錯,開啟一個圖片選擇頁面,選擇完獲得回撥的圖片路徑,比如:
Intent intent = new Intent(this, MultiImageSelectorActivity.class); intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, true);//是否展示拍照圖片 intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 1);//最多選取幾張 intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, MultiImageSelectorActivity.MODE_SINGLE);//單選 startActivityForResult(intent, FeedBackActivity.REQUEST_IMAGE);
這樣通過
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE) { if (resultCode == RESULT_OK) { List<String> path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT); } } }
就能拿到圖片路徑
看起來是很方便,但事實上我們好要做不少事,首先要頂一個ViewGroup,然後一個一個addView,展示方式有可能是水平也可能是GridView的網格型別,而且還要刪除,瀏覽,長按抖動等效果,還是要一堆程式碼啊!居於這個問題,MultiPhotoContainer可以馬上搞定!
先說說MultiPhotoContainer的功能吧,當前的為版本1.0,後續會優化和擴充套件
#Version 1.0
1,可以修改加號按鈕,刪除按鈕的圖片,圖片的圓角半徑
2,可以自定義佈局樣式,是水平滑動還是以GridView的形式展示
3,可以自定義圖片的間距,左右間距和上下間距
4,有長按抖動效果
5,有圖片交換功能(待續)
6,有圖片瀏覽功能
如何用呢,往下看(Android Studio)
將multiphoto_container.aar複製到libs下
build.gradle配置
//加入
repositories {
flatDir {
dirs'libs'
}
}
dependencies {
compile 'com.squareup.picasso:picasso:2.4.0'
compile(name:'multiphoto_container', ext:'aar')
}
attrs.xml中可修改引數 <declare-styleable name="MultiPhotoSelectContainer">
<!-- 圖片顯示垂直間距 -->
<attr name="multiPhoto_vertical_margin" format="dimension" />
<!-- 圖片顯示水平間距 -->
<attr name="multiPhoto_horizontal_margin" format="dimension" />
<!-- 相對於螢幕左邊距 -->
<attr name="multiPhoto_page_margin_left" format="dimension" />
<!-- 相對於螢幕右邊距 -->
<attr name="multiPhoto_page_margin_right" format="dimension" />
<!-- 圖片顯示最大個數,預設9個 -->
<attr name="multiPhoto_count" format="integer" />
<!-- 圖片顯示列數,預設5列 -->
<attr name="multiPhoto_colomns" format="integer" />
<!-- 圖片顯示大小,可自動適配,確保顯示全 -->
<attr name="multiPhoto_photo_size" format="dimension" />
<!-- 圖片顯示圓角半徑 -->
<attr name="multiPhoto_photo_radius" format="dimension" />
<!-- 刪除按鈕替換資源ID -->
<attr name="multiPhoto_delete_resId" format="reference" />
<!-- 增加按鈕替換資源ID -->
<attr name="multiPhoto_add_resId" format="reference" />
</declare-styleable>
引用
<com.multiphoto.select.MultiPhotoSelectContainer
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/multiphoto_container_select"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/usercenter_operation_gridview"
android:clipChildren="false"
app:multiPhoto_horizontal_margin="5dp"
app:multiPhoto_page_margin_left="15dp"
app:multiPhoto_page_margin_right="15dp"
app:multiPhoto_photo_size="60dp"
/>
Source中可修改
1 setCompressKbSize //圖片大小上限 預設2000KB
2 setCurrentLayoutType //設定佈局樣式,LayoutType_Horizontal(水平)LayoutType_Vertical(網格)
目標
public ArrayList<String> getPhotoList();//得到圖片路徑列表
有沒發現這個容器的好處是符合業務邏輯,壓縮圖片處理,而且使用起來非常方便,對於要釋出動態,意見反饋的需求,是不是分分鐘搞定?
先來張截圖給大家看下效果
程式碼資源下載連結: