正文
版权声明:本文为博主原创文章,未经博主允许不得转载
系列教程:
Android开发之从零开始系列
源码:
AnliaLee/PhotoFactory
,欢迎star
大家要是看到有错误的地方或者有啥好的建议,欢迎留言评论
初看标题是不是觉得博主是标题党,故意把你们骗了进来?告诉你
博主帮大家封装好了
PhotoFactory
类,只需三行代码就可以完成
选择照片,获取其bitmap或uri路径(可自行配置是否压缩)的功能
。下面来看下如何使用
PhotoFactory
PhotoFactory简介
使用
PhotoFactory
分为三步,首先我们要实例化一个
photoFactory
PhotoFactory photoFactory = new PhotoFactory(this, this);
设置选择照片的方式
photoFactory.FactoryStart().SetStartType(PhotoFactory.TYPE_PHOTO_UNTREATED).Start();
获取相片bitmap或uri
photoFactory.FactoryFinish(requestCode,resultCode,data).GetBitmap();
就这么简单,当然,你还可以对照片进行压缩处理,这里提供了三种压缩的方式
addScaleCompress(int w, int h)
addScaleCompress(int scale)
addQualityCompress(int targetSize)
你可以选择其中一种或多种压缩方式对相片进行压缩,例如
photoFactory.FactoryFinish(requestCode,resultCode,data)
.addQualityCompress(128)
.GetBitmap();
photoFactory.FactoryFinish(requestCode,resultCode,data)
.addQualityCompress(128)
.addScaleCompress(5)
.addScaleCompress(300,300)
.GetBitmap();
完整示例
PhotoFactory
兼容了
Android 7.0 FileProvider
获取相片
uri
的问题,当然具体
Provider
的配置以及
Android 6.0的动态权限管理
需要大家在项目中自行完成。这里为了方便大家完成配置,我将完整的流程贴出来供大家参考
1.在Github下载photofactory library并导入到你的项目中
地址:
AnliaLee/PhotoFactory
2. 在res\xml目录中创建provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
3. 在AndroidManifest.xml中添加相应权限及配置Provider
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:icon="@mipmap/ic_launcher"
...
>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
...
</application>
4. 在AndroidManifest.xml中添加相应权限及配置Provider
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:icon="@mipmap/ic_launcher"
...
>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
...
</application>
5. 在Activity中进行动态权限管理以及使用PhotoFactory
public class PhotoTestActivity extends AppCompatActivity {
private Button btnPhoto;
private ImageView imgPhoto;
private PhotoFactory photoFactory;
@Override
protected void