图片选择经常用到,系统自带的图片选择挺好的,写起来不难,但是比较麻烦,所以自己集成了一个库,方便使用
集成方法:
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.8'
}
使用例子
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);
当然也可以不使用默认界面,直接打开相册或者相机选择图片
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