將 MeiqiaSDK-Android[https://github.com/Meiqia/MeiqiaSDK-Android] 里的圖庫(kù)單獨(dú)抽出來(lái)開(kāi)源,將其中的 GridView秆吵、ListView 和 RelativeLayout 換成 RecyclerView 和 Toolbar淮椰,方便在以后的項(xiàng)目中直接依賴使用。Demo 中模仿了微信朋友圈的部分功能,詳細(xì)用法請(qǐng)查看 Demo主穗。希望能該庫(kù)幫正在做這幾個(gè)功能的猿友節(jié)省開(kāi)發(fā)時(shí)間泻拦。
單圖選擇
多圖選擇
拍照選擇
圖片選擇預(yù)覽(支持微博長(zhǎng)圖)、縮放查看
圖片預(yù)覽(支持微博長(zhǎng)圖)忽媒、縮放查看
支持 glide争拐、picasso、universal-image-loader晦雨、xutils 圖片加載庫(kù)
支持配置列表滾動(dòng)時(shí)是否暫停加載圖片架曹,列表停止?jié)L動(dòng)時(shí)恢復(fù)加載圖片(用 xutils 作為圖片加載庫(kù)時(shí)該配置無(wú)效)
正方形、圓形頭像闹瞧、帶邊框的圓形頭像控件
朋友圈列表界面的九宮格圖片控件
發(fā)布朋友圈界面的可拖拽排序的九宮格圖片控件
覆蓋相應(yīng)的資源文件來(lái)定制界面
1.添加 Gradle 依賴
「latestVersion」指的是左邊這個(gè) maven-central 徽章后面的「數(shù)字」绑雄,請(qǐng)自行替換。請(qǐng)不要再來(lái)問(wèn)我「latestVersion」是什么了
由于需要支持微博長(zhǎng)圖預(yù)覽奥邮,該庫(kù)中已經(jīng)引入了 PhotoView 的源碼并進(jìn)行了修改万牺,所以你的項(xiàng)目中就不要再重復(fù)引入 PhotoView 了
dependencies {
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'
compile 'cn.bingoogolapple:bga-adapter:1.1.5@aar'
compile 'cn.bingoogolapple:bga-photopicker:latestVersion@aar'
// 必須依賴下面四個(gè)圖片加載庫(kù)中的某一個(gè)
compile 'com.github.bumptech.glide:glide:3.7.0'
// compile 'com.squareup.picasso:picasso:2.5.2'
// compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
// compile 'org.xutils:xutils:3.3.36'
}
2.接口說(shuō)明
/**
* @param context 應(yīng)用程序上下文
* @param imageDir 拍照后圖片保存的目錄。如果傳null表示沒(méi)有拍照功能洽腺,如果不為null則具有拍照功能脚粟,
* @param maxChooseCount 圖片選擇張數(shù)的最大值
* @param selectedImages 當(dāng)前已選中的圖片路徑集合,可以傳null
* @param pauseOnScroll 滾動(dòng)列表時(shí)是否暫停加載圖片
* @return
*/
public static Intent newIntent(Context context, File imageDir, int maxChooseCount, ArrayList<String> selectedImages, boolean pauseOnScroll)
/**
* 獲取已選擇的圖片集合
*
* @param intent
* @return
*/
public static ArrayList<String> getSelectedImages(Intent intent)
/**
* 獲取查看多張圖片的intent
*
* @param context
* @param saveImgDir 保存圖片的目錄蘸朋,如果傳null核无,則沒(méi)有保存圖片功能
* @param previewImages 當(dāng)前預(yù)覽的圖片目錄里的圖片路徑集合
* @param currentPosition 當(dāng)前預(yù)覽圖片的位置
* @return
*/
public static Intent newIntent(Context context, File saveImgDir, ArrayList<String> previewImages, int currentPosition)
/**
* 獲取查看單張圖片的intent
*
* @param context
* @param saveImgDir 保存圖片的目錄,如果傳null藕坯,則沒(méi)有保存圖片功能
* @param photoPath 圖片路徑
* @return
*/
public static Intent newIntent(Context context, File saveImgDir, String photoPath)
自定義屬性說(shuō)明
<declare-styleable name="BGASortableNinePhotoLayout">
<!-- 是否顯示加號(hào)厕宗,默認(rèn)值為 true -->
<attr name="bga_snpl_plusEnable" format="boolean"/>
<!-- 是否可拖拽排序,默認(rèn)值為 true -->
<attr name="bga_snpl_sortable" format="boolean"/>
<!-- 刪除按鈕圖片堕担,默認(rèn)值為 R.mipmap.bga_pp_ic_delete -->
<attr name="bga_snpl_deleteDrawable" format="reference"/>
<!-- 可選擇圖片的總張數(shù),默認(rèn)值為 9 -->
<attr name="bga_snpl_maxItemCount" format="integer"/>
<!-- 列數(shù),默認(rèn)值為 3 -->
<attr name="bga_snpl_itemSpanCount" format="integer"/>
<!-- 刪除按鈕是否重疊四分之一已慢,默認(rèn)值為 false -->
<attr name="bga_snpl_deleteDrawableOverlapQuarter" format="boolean"/>
<!-- 添加按鈕圖片,默認(rèn)值為 R.mipmap.bga_pp_ic_plus -->
<attr name="bga_snpl_plusDrawable" format="reference"/>
<!-- Item 條目圓角尺寸霹购,默認(rèn)值為 0dp -->
<attr name="bga_snpl_itemCornerRadius" format="dimension|reference"/>
<!-- Item 間的水平和垂直間距佑惠,默認(rèn)值為 4dp -->
<attr name="bga_snpl_itemWhiteSpacing" format="dimension|reference"/>
<!-- 出去九宮格部分的空白區(qū)域的尺寸,默認(rèn)值為 100dp -->
<attr name="bga_snpl_otherWhiteSpacing" format="dimension|reference"/>
<!-- 占位圖資源齐疙,默認(rèn)值為 R.mipmap.bga_pp_ic_holder_light -->
<attr name="bga_snpl_placeholderDrawable" format="reference"/>
<!-- 是否可編輯膜楷,默認(rèn)值為 true -->
<attr name="bga_snpl_editable" format="boolean"/>
<!-- item 的尺寸,大于 0dp 時(shí)優(yōu)先級(jí)高于 bga_snpl_otherWhiteSpacing贞奋,默認(rèn)值為 0dp -->
<attr name="bga_snpl_itemWidth" format="dimension|reference"/>
</declare-styleable>
<declare-styleable name="BGANinePhotoLayout">
<!-- Item 條目圓角尺寸赌厅,默認(rèn)值為 0dp -->
<attr name="bga_npl_itemCornerRadius" format="dimension|reference"/>
<!-- 當(dāng)只有一張圖片時(shí),是否顯示成大圖轿塔,默認(rèn)值為 true -->
<attr name="bga_npl_showAsLargeWhenOnlyOne" format="boolean"/>
<!-- Item 間的水平和垂直間距特愿,默認(rèn)值為 4dp -->
<attr name="bga_npl_itemWhiteSpacing" format="dimension|reference"/>
<!-- 出去九宮格部分的空白區(qū)域的尺寸仲墨,默認(rèn)值為 100dp -->
<attr name="bga_npl_otherWhiteSpacing" format="dimension|reference"/>
<!-- 占位圖資源,默認(rèn)值為 R.mipmap.bga_pp_ic_holder_light -->
<attr name="bga_npl_placeholderDrawable" format="reference"/>
<!-- item 的尺寸揍障,優(yōu)先級(jí)高于 bga_npl_otherWhiteSpacing目养,默認(rèn)值為 0dp -->
<attr name="bga_npl_itemWidth" format="dimension|reference"/>
<!-- 列數(shù),默認(rèn)值為 3,當(dāng)該值大于 3 并且數(shù)據(jù)源里只有四張圖片時(shí)不會(huì)顯示成 2 列 -->
<attr name="bga_npl_itemSpanCount" format="integer"/>
</declare-styleable>
<declare-styleable name="BGAImageView">
<!-- 默認(rèn)圖片資源毒嫡,默認(rèn)值為 null -->
<attr name="android:src"/>
<!-- 是否是圓形癌蚁,默認(rèn)值為 false -->
<attr name="bga_iv_circle" format="boolean"/>
<!-- 圓角矩形的半徑,默認(rèn)值為 0dp -->
<attr name="bga_iv_cornerRadius" format="reference|dimension"/>
<!-- 是否是矩形兜畸,默認(rèn)值為 false -->
<attr name="bga_iv_square" format="boolean"/>
<!-- 描邊的寬度努释,默認(rèn)值為 0dp -->
<attr name="bga_iv_borderWidth" format="reference|dimension"/>
<!-- 描邊的顏色,默認(rèn)值為 Color.WHITE -->
<attr name="bga_iv_borderColor" format="reference|color"/>
</declare-styleable>