TakePhotoV2.0已發(fā)布,詳見《TakePhoto-輕量級Android照片處理框架V2.0發(fā)布》
TakePhoto 簡介
- 支持以拍照的方式獲取照片
- 支持從相冊選擇照片
- 支持對照片進行裁切
- 支持對照片進行壓縮
- 支持對裁切及壓縮參數自定義
- 支持因拍照Activity被回收后的自動恢復
GitHub地址: https://github.com/crazycodeboy/TakePhoto
如何使用
使用TakePhoto有以下兩種方式:
方式一:通過繼承的方式
- 繼承TakePhotoActivity、TakePhotoFragmentActivity、TakePhotoFragment三者之一。
- 通過
getTakePhoto()獲取TakePhoto實例進行相關操作。 - 重寫以下方法獲取結果
void takeSuccess(String imagePath);
void takeFail(String msg);
void takeCancel();
此方式使用簡單,滿足的大部分的使用需求,具體使用詳見simple。如果通過繼承的方式無法滿足實際項目的使用,可以通過下面介紹的方式。
方式二:通過組裝的方式
- 獲取TakePhoto實例
TakePhoto takePhoto=new TakePhotoImpl(getActivity(),this); - 在
onCreate,onActivityResult,onSaveInstanceState方法中調用TakePhoto對用的方法。 - 調用TakePhoto實例進行相關操作。
- 在
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。如果你在使用過程中發(fā)現了適配問題,可以提交Issues。
- 為適配部分手機拍照時會回收Activity,TakePhoto在
onSaveInstanceState與onCreate做了相應的恢復處理。 - 為適配部分手機拍照或從相冊選擇照片時屏幕方向會發(fā)生轉變,從而導致拍照失敗的問題,可以在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發(fā)布到JCenter(如果你對如何將項目發(fā)布到JCenter感興趣可以參考:《教你輕松將Android library 發(fā)布到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。