TakePhoto-輕量級Android照片處理框架
TakePhotoV2.0已釋出,詳見《TakePhoto-輕量級Android照片處理框架V2.0釋出》
- TakePhoto 簡介
- 支援以拍照的方式獲取照片
- 支援從相簿選擇照片
- 支援對照片進行裁切
- 支援對照片進行壓縮
- 支援對裁切及壓縮引數自定義
- 支援因拍照Activity被回收後的自動恢復
GitHub地址: https://github.com/crazycodeboy/TakePhoto
如何使用
使用TakePhoto有以下兩種方式:
方式一:通過繼承的方式
1. 繼承TakePhotoActivity、TakePhotoFragmentActivity、TakePhotoFragment三者之一。
2. 通過getTakePhoto()獲取TakePhoto例項進行相關操作。
3. 重寫以下方法獲取結果
void takeSuccess(String imagePath);
void takeFail(String msg);
void takeCancel();
此方式使用簡單,滿足的大部分的使用需求,具體使用詳見simple。如果通過繼承的方式無法滿足實際專案的使用,可以通過下面介紹的方式。
方式二:通過組裝的方式
1. 獲取TakePhoto例項TakePhoto takePhoto=new TakePhotoImpl(getActivity(),this);
2. 在 onCreate,onActivityResult,onSaveInstanceState方法中呼叫TakePhoto對用的方法。
3. 呼叫TakePhoto例項進行相關操作。
4. 在TakeResultListener相關方法中獲取結果。
關於壓縮照片
你可以選擇是否對照片進行壓縮處理。
/**
* 啟用照片壓縮
* @param config 壓縮照片配置
* @param showCompressDialog 壓縮時是否顯示進度對話方塊
* @return
*/
TakePhoto onEnableCompress(CompressConfig config,boolean showCompressDialog);
eg:
getTakePhoto().onEnableCompress(new CompressConfig.Builder().setMaxSize(50*1024).setMaxPixel(800).create(),true).onPicSelectCrop(imageUri);
如果你啟用了照片壓縮,TakePhoto會使用CompressImage對照片進行壓縮處理,CompressImage目前支援對照片的尺寸以及照片的質量進行壓縮。預設情況下,CompressImage開啟了尺寸與質量雙重壓縮,
你可以通過CompressConfig.Builder對照片壓縮後的尺寸以及質量進行相關設定。如果你想改變壓縮的方式可以通過CompressConfig.Builder進行相關設定。
關於相容性問題
TakePhoto是基於Android官方標準API編寫的,適配了目前市場上主流的Rom。如果你在使用過程中發現了適配問題,可以提交Issues。
1. 為適配部分手機拍照時會回收Activity,TakePhoto在onSaveInstanceState與 onCreate做了相應的恢復處理。
2. 為適配部分手機拍照或從相簿選擇照片時螢幕方向會發生轉變,從而導致拍照失敗的問題,可以在AndroidManifest.xml中對使用了TakePhoto的Activity新增android:configChanges=”orientation|keyboardHidden|screenSize”配置。
eg:
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在專案中使用
為方便大家使用,現已將TakePhoto釋出到JCenter(如果你對如何將專案釋出到JCenter感興趣可以參考:《教你輕鬆將Android library 釋出到JCenter)》
Gradle:
compile 'com.jph.takephoto:takephoto_library:1.0.1'
Maven:
<dependency>
<groupId>com.jph.takephoto</groupId>
<artifactId>takephoto_library</artifactId>
<version>1.0.1</version>
<type>pom</type>
</dependency>
最後
如果你對TakePhoto有更好的建議或想改造它,歡迎大家Fork and Pull requests。