@Tyhj
2018-12-03T00:28:04.000000Z
字数 1742
阅读 1167
Android
原文链接:https://www.zybuluo.com/Tyhj/note/1307477
图片选择经常用到,系统自带的图片选择挺好的,写起来不难,但是比较麻烦,所以自己集成了一个库,方便使用
Step 1. Add the JitPack repository to your build file
//Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
//Add the dependency
dependencies {
implementation 'com.github.tyhjh:picturePickUtil:v1.0.2'
}
PicturePickUtil.pick(MainActivity.this, new OnPickListener() {
@Override
public void pickPicture(File file) {
iv_picture.setImageBitmap(BitmapFactory.decodeFile(file.getPath()));
}
});
界面非常简洁,使用默认界面打开相机或者相册来选择图片
首先Android 7.0以上在应用间共享Uri必须使用FileProvider,所以必须先配置在AndroidManifest中配置provider,由于每个应用的provider的authorities是不可以一样的,所以需要单独配置
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="yourName"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
@xml/provider_paths文件库里面有写,不用再生成,但是authorities的值需要用到,需要保存
//保存authority值
PicturePickUtil.init("yourName");
//设置图片长宽(作为参考不会修改图片比例)和文件大小,进行压缩
PicturePickUtil.setPictureSize(500, 500, 500);
//设置裁剪的比例,设置为null则可手动随意裁剪,默认会复制一次,防止把原图片改变
PicturePickUtil.setPictureScale(1, 1);
//如果不需要裁剪,直接获取路径可以设置为false,
PicturePickUtil.setCreatNewFile(false);
当然也可以不使用默认界面,直接打开相册或者相机选择图片
PicturePickUtil.pickByAlbum(MainActivity.this, new OnPickListener() {
@Override
public void pickPicture(File file) {
iv_picture.setImageBitmap(BitmapFactory.decodeFile(file.getPath()));
}
});
PicturePickUtil.pickByCamera(MainActivity.this, new OnPickListener() {
@Override
public void pickPicture(File file) {
iv_picture.setImageBitmap(BitmapFactory.decodeFile(file.getPath()));
}
});
项目地址(最新版本):https://github.com/tyhjh/PicturePickUtil