先上demo:https://gitee.com/longlyblack/PhotoDemo
使用环境:
常用的使用弹窗选择图片或者照相功能
适配至8.0
使用方法:
1 动圈申请权限
使用Google的easyPermission权限
申请方法是initPermission()
//google权限管理库
implementation 'pub.devrel:easypermissions:0.3.0'
private void initPermission() {
if (PermissionUtil.loginPermission(this, LOGINPRESSION)) {
if (!PermissionUtil.isOPen(MainActivity.this)) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, REQEEST_CDOE_GPS);
}
}
}
2 跳出弹窗
3 获取图片返回值
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == 0) {
capath = uri + "";
//这里判断图片返回值,将Android不识别的图片地址更改为可识别的
if ((capath + "").contains("content")) {
capath = ImageUtils.getRealPathFromURI(this, uri);
} else if (capath.contains("file:///")) {
capath = capath.substring(7, capath.length());
} else {
capath = data.getData().toString();
}
GlideUtil.setCircleMethod(MainActivity.this, capath, ivModuleHead);
lubanMethod(capath);
} else if (requestCode == 3) {
if (data == null) {
return;
}
capath = ImageUtils.getInstance().getFilePathMethod(this, data.getData());
GlideUtil.setCircleMethod(MainActivity.this, capath, ivModuleHead);
lubanMethod(capath);
}
}
}
4 修改返回值
转换工具类:ImageUtil
capath = ImageUtils.getRealPathFromURI(this, uri);
5 显示图片
使用Glide加载工具
加载图片工具类:GlideUitl
GlideUtil.setCircleMethod(MainActivity.this, capath, ivModuleHead);
6 图片压缩
使用Luban压缩工具
public void lubanMethod(final String str) {
Luban.with(this).
load(new File(str)).
setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
files.add(file);
//TODO 这里处理列表里的图片文件
}
@Override
public void onError(Throwable e) {
}
}).
launch();
}
至此,结束!
demo地址:https://gitee.com/longlyblack/PhotoDemo
技术聊天群:88627109
欢迎您的到来!