輕量開源相簿 Album

嚴振杰發表於2016-11-01

本專案開源地址:github.com/yanzhenjie/…

  1. Album是一個Android開源相簿,支援單/多選、縮放、預覽、按資料夾檢視圖片,後期會考慮加入圖片剪下等操作。

  2. 開發者不需要擔心Android6.0的執行時許可權,Album已經非常完善的處理過了。

  3. 支援自定義樣式風格,比如Toolbar顏色、狀態列顏色等。

  4. 內建支援了相機,開發者不用擔心相機的使用問題,Album自動搞定。

  5. 支援ActivityFragment呼叫。

技術交流群:46523908
圖片上傳推薦使用NoHttp:NoHttp原始碼,同時NoHttp詳細文件已釋出:NoHttp詳細使用文件

Demo效果預覽

輕量開源相簿 Album
選擇圖片
輕量開源相簿 Album
切換資料夾

輕量開源相簿 Album
預覽

如果你想體驗一把,你可以下載demo的apk來玩玩。

使用方法

Gradle:

compile 'com.yanzhenjie:album:1.0.0'複製程式碼

Or Maven:

<dependency>
  <groupId>com.yanzhenjie</groupId>
  <artifactId>album</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>複製程式碼

Eclipse請下載原始碼自行轉換成Library project。

mainifest.xml中需要註冊

<activity
    android:name="com.yanzhenjie.album.AlbumActivity"
    android:label="相簿"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    android:windowSoftInputMode="stateAlwaysHidden|stateHidden" />複製程式碼

其中android:label="xx"中的xx是調起的Activity的標題,你可以自定義,其它請照抄即可。

需要的許可權

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />複製程式碼

開發者不需要擔心Android6.0的執行時許可權,Album已經非常完善的處理過了。

如何呼叫

調起Album的介面:

// 1. 使用預設風格,並指定選擇數量:
// 第一個引數Activity/Fragment; 第二個request_code; 第三個允許選擇照片的數量,不填可以無限選擇。
// Album.startAlbum(this, ACTIVITY_REQUEST_SELECT_PHOTO, 9);

// 2. 使用預設風格,不指定選擇數量:
// Album.startAlbum(this, ACTIVITY_REQUEST_SELECT_PHOTO); // 第三個引數不填的話,可以選擇無數個。

// 3. 指定風格,並指定選擇數量,如果不想限制數量傳入Integer.MAX_VALUE;
Album.startAlbum(this, ACTIVITY_REQUEST_SELECT_PHOTO
    , 9                                                         // 指定選擇數量。
    , ContextCompat.getColor(this, R.color.colorPrimary)        // 指定Toolbar的顏色。
    , ContextCompat.getColor(this, R.color.colorPrimaryDark));  // 指定狀態列的顏色。複製程式碼

接受結果,重寫Activity/FragmentonActivityResult()方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 100) {
        if (resultCode == RESULT_OK) { // 判斷是否成功。
            // 拿到使用者選擇的圖片路徑List:
            List<String> pathList = Album.parseResult(data);
        } else if (resultCode == RESULT_CANCELED) { // 使用者取消選擇。
            // 根據需要提示使用者取消了選擇。
        }
    }
}複製程式碼

注意點

由於支援了MaterialDesign,專案中已經引用了Google官方的的support庫:

compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:design:24.2.1'複製程式碼

混淆

都是可以混淆的,如果混淆遇到問題了,請新增如下規則。

-dontwarn com.yanzhenjie.album.**
-keep class com.yanzhenjie.album.**{*;}複製程式碼

相關文章