-
Notifications
You must be signed in to change notification settings - Fork 503
02 相机与相册
-
创建相机:
EasyPhotos.createCamera(this)//参数说明:上下文 -
创建相册:
EasyPhotos.createAlbum(this, false)//参数说明:上下文,是否显示相机按钮 -
配置FileProvider字符串:
setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")//参数说明:见下方FileProvider的配置
-
设置选择数:
setCount(9)//参数说明:最大可选数,默认1 -
设置显示照片的最小文件大小:
setMinFileSize(1024*10)//参数说明:最小文件大小,单位Bytes -
设置显示照片的最小宽度:
setMinWidth(500)//参数说明:显示照片的最小宽度,单位Px -
设置显示照片的最小高度:
setMinHeight(500)//参数说明:显示照片的最小高度,单位Px -
设置默认选择图片集合方式一:
setSelectedPhotos(mSelectedPhotos)//参数说明:用户上一次勾选过的图片集合,ArrayList<Photo>类型 -
设置默认选择图片集合方式二:
setSelectedPhotoPaths(selectedPhotoPathList)//参数说明:用户上一次勾选过的图片地址集合,ArrayList<String>类型 -
设置原图按钮:
setOriginalMenu(isChecked, isVip, "该功能为VIP会员特权功能")//参数说明:是否默认选中,是否可用,不可用时用户点击将toast信息。不执行该方法则不显示原图按钮。是否默认选中可以根据EasyPhotos的回调走,回调中会给出用户上一次是否选择了原图选项的标识 -
设置广告:
setAdView(photosAdView, photosAdIsLoaded, albumItemsAdView, albumItemsAdIsLoaded)//参数说明:相册中的广告view,相册中的广告View数据是否绑定完毕,专辑列表广告View,专辑列表广告View数据是否绑定完毕。不执行该方法则不使用广告填充功能。广告view可以传空,适用于VIP不显示广告场景 -
刷新图片列表广告数据:
EasyPhotos.notifyPhotosAdLoaded() -
刷新专辑项目列表广告:
EasyPhotos.notifyAlbumItemsAdLoaded() -
启动相机或相册:
start(requestCode); -
图片最小文件大小、图片最小宽度、图片最小高度,如果单一设置,满足条件即过滤,如果多项设置,满足一项即过滤
(如果使用广告模式,建议下载示例代码查看SampleActivity中的具体实现)
- 单独使用相机
EasyPhotos.createCamera(this)//参数说明:上下文
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")//参数说明:见下方`FileProvider的配置`
.start(requestCode);
- 相册单选,无相机功能
EasyPhotos.createAlbum(this, false)//参数说明:上下文,是否显示相机按钮
.start(requestCode);
- 相册多选,无相机功能
EasyPhotos.createAlbum(this, false)//参数说明:上下文,是否显示相机按钮
.setCount(9)//参数说明:最大可选数,默认1
.start(requestCode);
- 相册单选,有相机功能
EasyPhotos.createAlbum(this, true)//参数说明:上下文,是否显示相机按钮
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")//参数说明:见下方`FileProvider的配置`
.start(requestCode);
- 相册多选,有相机功能
EasyPhotos.createAlbum(this, true)//参数说明:上下文,是否显示相机按钮
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")//参数说明:见下方`FileProvider的配置`
.setCount(22)//参数说明:最大可选数,默认1
.start(requestCode);
- 相册中包含广告(如果使用该模式,建议下载示例代码查看SampleActivity中的具体实现)
EasyPhotos.createAlbum(this, true)//参数说明:上下文,是否显示相机按钮
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")//参数说明:见下方`FileProvider的配置`
.setCount(9)//参数说明:最大可选数,默认1
.setAdView(photosAdView, photosAdIsLoaded, albumItemsAdView, albumItemsAdIsLoaded)//参数说明:相册中的广告view,相册中的广告View数据是否绑定完毕,专辑列表广告View,专辑列表广告View数据是否绑定完毕。不执行该方法则不使用广告填充功能。广告view可以传空,适用于VIP不显示广告场景
.start(requestCode);
- 相册中包含默认勾选图片地址集合
EasyPhotos.createAlbum(this, true)
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")
.setCount(9)
.setSelectedPhotoPaths(selectedPhotoPathList,false)//参数说明:用户上一次勾选过的图片地址集合,ArrayList<String>类型;上次用户选择图片时是否选中了原图选项,如不用原图选项功能直接传false即可。
.start(requestCode);
- 相册中包含默认勾选图片集合
EasyPhotos.createAlbum(this, true)//参数说明:上下文,是否显示相机按钮
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")//参数说明:见下方`FileProvider的配置`
.setCount(9)//参数说明:最大可选数,默认1
.setSelectedPhotos(mSelectedPhotos)//参数说明:用户上一次勾选过的图片集合,ArrayList<Photo>类型
.start(requestCode);
- 只显示限制尺寸或限制文件大小以上的图片
EasyPhotos.createAlbum(this, true)
.setFileProviderAuthoritiesText("com.huantansheng.easyphotos.sample.fileprovider")
.setCount(9)
.setMinWidth(500)//参数说明:最小宽度500px
.setMinHeight(500)//参数说明:最小高度500px
.setMinFileSize(1024 * 10)//参数说明:最小文件大小10K
.start(requestCode);
- 显示原图按钮,并且默认选中,按钮可用。
EasyPhotos.createAlbum(this, false)//参数说明:上下文,是否显示相机按钮
.setCount(9)//参数说明:最大可选数,默认1
.setOriginalMenu(true, true, null)//参数说明:是否默认选中状态,是否可用,不可用时用户点击将toast信息。是否默认选中可以根据EasyPhotos的回调走,回调中会给出用户上一次是否选择了原图选项的标识
.start(requestCode);
- 显示原图按钮,并且默认不选中,按钮不可用。使用场景举例:仅VIP可以上传原图
boolean isVip = false;//假设获取用户信息发现该用户不是vip
EasyPhotos.createAlbum(this, false)//参数说明:上下文,是否显示相机按钮
.setCount(9)//参数说明:最大可选数,默认1
.setOriginalMenu(false, isVip, "该功能为VIP会员特权功能")//参数说明:是否默认选中状态,是否可用,不可用时用户点击将toast信息。是否默认选中可以根据EasyPhotos的回调走,回调中会给出用户上一次是否选择了原图选项的标识
.start(requestCode);
-
返回对象集合:如果你需要了解图片的宽、高、大小、用户是否选中原图选项等信息,可以用这个
ArrayList<Photo> resultPhotos = data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS); -
返回图片地址集合:如果你只需要获取图片的地址,可以用这个
ArrayList<String> resultPaths = data.getStringArrayListExtra(EasyPhotos.RESULT_PATHS); -
返回图片地址集合时如果你需要知道用户选择图片时是否选择了原图选项,用如下方法获取
boolean selectedOriginal = data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false);
在 onActivityResult()
方法中获取EasyPhotos的回调图片地址集合:
- data.getStringArrayListExtra(EasyPhotos.RESULT_PATHS);
List<String> mSelected = new ArrayList<>();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (RESULT_OK == resultCode) {
//返回图片地址集合:如果你只需要获取图片的地址,可以用这个
ArrayList<String> resultPaths = data.getStringArrayListExtra(EasyPhotos.RESULT_PATHS);
//返回图片地址集合时如果你需要知道用户选择图片时是否选择了原图选项,用如下方法获取
boolean selectedOriginal = data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false);
mSelected .clear();
mSelected .addAll(resultPaths);
}
在 onActivityResult()
方法中获取EasyPhotos的回调图片集合,包含图片的宽、高、大小、用户是否选中原图选项等信息:
- data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS);
List<Photo> mSelected = new ArrayList<>();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == requestCode_easyPhotos && resultCode == RESULT_OK) {
//返回对象集合:如果你需要了解图片的宽、高、大小、用户是否选中原图选项等信息,可以用这个
ArrayList<Photo> resultPhotos = data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS);
mSelected.clear();
mSelected.addAll(resultPhotos);
}
}
public String name;//图片名称
public String path;//图片全路径
public String type;//图片类型
public int width;//图片宽度
public int height;//图片高度
public long size;//图片文件大小,单位:Bytes
public long time;//图片最后修改时间戳,单位:秒
public boolean isCamera;//是否是相机按钮,内部使用,无需关心
public boolean selected;//是否被选中,内部使用,无需关心
public boolean selectedOriginal;//用户选择时是否选择了原图选项
在android7.0之后必须加入FileProvider的配置才能获取拍照的照片,在你App的manifests
文件里添加:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.huantansheng.easyphotos.sample.fileprovider"//别忘了换成你自己的包名,另外这个字符串就是EasyPhotos.setFileProviderAuthoritiesText()的参数
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths_public" />
</provider>
-
file_paths_public
文件需要你在App的res
文件夹下的xml
文件夹里自己创建,,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<root-path
name="camera_photos"
path="" />
</paths>
</resources>