因为项目中有裁剪图片这一需求,我在网上找到了Android Image Cropper,一款使用起来非常简单第三方图片裁剪框架,在此记录一下。
项目的github地址:Android Image Cropper

Android Image Cropper有两种使用方法:
1、Activity用法
(1)在app模块的build.gradle文件中添加依赖

api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'

(2)在AndroidManifest.xml文件中声明所需要的权限

<!--读取SD卡--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><!--写入SD卡--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

(3)在AndroidManifest.xml文件中注册CropImageActivity

<activity            android:name="com.theartofdev.edmodo.cropper.CropImageActivity"            android:theme="@style/Base.Theme.AppCompat" /> <!-- optional (needed if default theme has no action bar) -->

(4)在需要裁减图片的地方启动CropImageActivity

CropImage.activity()        .setGuidelines(CropImageView.Guidelines.ON) //开启选择器        .setActivityTitle("头像裁剪")        .setCropShape(CropImageView.CropShape.RECTANGLE)  //选择矩形裁剪                        .start(UserDataActivity.this);

(5)重写onActivityResult,获取裁剪后的图片的uri:

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {           //用户没有进行有效的设置操作,返回        if (resultCode == RESULT_CANCELED) {            Toast.makeText(getApplication(), "取消", Toast.LENGTH_LONG).show();            return;        }        switch (requestCode) {            case CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE:{                CropImage.ActivityResult result = CropImage.getActivityResult(data);                             if(resultCode==RESULT_OK){                    final Uri resultUri = result.getUri();  //获取裁减后的图片的Uri                                      saveHeadPortrait(resultUri); //我自己写的处理图片的方法                }else if(resultCode==CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){                    Log.d("PhotoActivity", "onActivityResult: Error");                    Exception exception = result.getError();                }                break;            }        super.onActivityResult(requestCode, resultCode, data);    }

2、View用法
(1)(2)步和Activity用法一样。

(3)增加CropImageView到Activity的布局文件中

<!-- Image Cropper fill the remaining available height --><com.theartofdev.edmodo.cropper.CropImageView  xmlns:custom="http://schemas.android.com/apk/res-auto"  android:id="@+id/cropImageView"  android:layout_width="match_parent"  android:layout_height="0dp"  android:layout_weight="1"/>

(4)用的时候设置图片的uri

cropImageView.setImageUriAsync(uri);// or (prefer using uri for performance and better user experience)cropImageView.setImageBitmap(bitmap);

(5)获取裁减后的图片

// subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener)cropImageView.getCroppedImageAsync();// orBitmap cropped = cropImageView.getCroppedImage();

更多相关文章

  1. Android(安卓)matrix 控制图片的旋转、缩放、移动
  2. android拍照与读取相册
  3. Android(安卓)报错:Caused by: android.os.FileUriExposedExcepti
  4. 修改android系统和watchdog的延时
  5. android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
  6. [Android]在App中使用相机
  7. android WebView 图片缩放功能小结
  8. Android(安卓)主流图片库Picasso Glide Fresco对比分析
  9. android背景选择器selector用法汇总

随机推荐

  1. android UI设计属性中英对照表(未修订)
  2. Android震动实现
  3. android 开发屏蔽home键,返回键
  4. Android标签AndroidTagGroup(系列1)
  5. android 添加触摸反馈
  6. Android(安卓)音频播放
  7. Android(安卓)中Observer模式的使用
  8. Android中使用自身携带的Junit新建一个测
  9. android 中使用TableLayout实现表单布局
  10. 关于android安装sdk时找不到jdk的解决办