利用Album 实现仿微信图片选择(加入了图片剪裁)

来源:互联网 发布:淘宝卖家签收拒绝退款 编辑:程序博客网 时间:2024/06/07 03:08

本文图片选择基于轻量开源相册 Album,在选择图片完成后会调用系统图片剪裁页面,对图片进行剪裁
效果图:
选择图片(可以自定义选择几张):
这里写图片描述
剪切图片:
这里写图片描述
使用方法
1.Gradle:
compile ‘com.yanzhenjie:album:1.0.0’
2.权限

    <uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

3.注册Activity

            <activity            android:name="com.yanzhenjie.album.AlbumActivity"            android:label="图库"            android:configChanges="orientation|keyboardHidden|screenSize"            android:theme="@style/Theme.AppCompat.Light.NoActionBar"            android:windowSoftInputMode="stateAlwaysHidden|stateHidden" />

其中label=“”可以随便起,是Activity的标题

4.代码实现
调用

                //第一个参数Activity/Fragment;                 //第二个request_code;                //第三个允许选择照片的数量不填可以无限选择。                Album.startAlbum(MainActivity.this, 100,       //请求码                     9,                                   // 指定选择数量。                        // 指定Toolbar的颜色。                     ContextCompat.getColor(MainActivity.this, R.color.colorPrimary),                       // 指定状态栏的颜色。                     ContextCompat.getColor(MainActivity.this,R.color.colorPrimaryDark));  
接受返回数据
 @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == 100) {            if (resultCode == RESULT_OK) { // 判断是否成功。                // 拿到用户选择的图片路径List:                List<String> pathList = Album.parseResult(data);                //下面代码是用来调用系统剪裁的,这里默认对第一张选择的图片进行剪裁                Uri fromFileURI = Uri.fromFile(new File(pathList.get(0)));                Intent intent = new Intent("com.android.camera.action.CROP");                intent.setDataAndType(fromFileURI, "image/*");                intent.putExtra("crop", "true");                intent.putExtra("aspectX", 1 <= 0 ? 1 : 1);                intent.putExtra("aspectY", 1 <= 0 ? 1 : 1);                intent.putExtra("outputX", 100);                intent.putExtra("outputY", 100);                intent.putExtra("scale", true);                // 图片剪裁不足黑边解决                intent.putExtra("scaleUpIfNeeded", true);                intent.putExtra("return-data", false);                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(pathList.get(0) + "1")));//这里是保存剪裁后的图片(名字随便起的)                intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());                // 去除人脸识别                startActivity(intent.putExtra("noFaceDetection", true));            } else if (resultCode == RESULT_CANCELED) { // 用户取消选择。                // 根据需要提示用户取消了选择。            }        }    }
0 0
原创粉丝点击