【Android】简单实用的图片裁剪库 - SimpleCropView (非常适合MD风格)
2017-03-06 12:00
811 查看
因为项目已转为 Material Design 风格,再加上以前的裁剪库已经很老了,跟 MD 风格又不是很搭,所以需求来了之后就找到了这个库。用了之后发现功能丰富实用,也简单,就推荐给大家。
库名:SimpleCropView
GitHub:https://github.com/IsseiAoki/SimpleCropView
下面来简单的说说怎么使用。
首先需要在 build.gradle 里面加入依赖:
接着在布局 XML 里面跟普通的控件一样去使用:
注意加上(xmlns:custom="http://schemas.android.com/apk/res-auto")。
其 xml 属性以及对应的方法:
各颜色设置对应名称:
下面介绍一些基本的常用的设置:
1、handle(拖块) 的大小和 padding,分别对应XML属性表的10,11
2、guide(辅助线条) 和 frame (边框)的粗细,分别对应XML属性表的14,13
3、handle(拖块)和 guide(辅助线条)显示模式,有显示(SHOW_ALWAYS,默认),不显示(NOT_SHOW),触摸时才显示(SHOW_ON_TOUCH),分别对应XML属性表的9,8
4、裁剪框的初始大小,通过 setInitialFrameScale(float initialScale); 设置,其参数范围:0.01~1.0(default),分别对应效果:
5、裁剪框最小尺寸,通过 setMinFrameSizeInDp(int Mindp); 去设置,默认是50。
6、裁剪框模式,比如比例,形状(方,圆)。通过 setCropMode(CropImageView.CropMode.RATIO_16_9); 其参数属性有:
*FIT_IMAGE, 固定纵横比,与原始图片相同的比例
*RATIO_4_3, 固定纵横比,宽高比4:3
*RATIO_3_4, 固定纵横比,宽高比3:4
*SQUARE(default), 固定纵横比,1:1正方形
*RATIO_16_9, 固定纵横比,宽高比16:9
*RATIO_9_16, 固定纵横比,宽高比9:16
*FREE, 非固定纵横比
*CUSTOM, 定制的
*CIRCLE, 圆形
*CIRCLE_SQUARE, 圆形,但裁剪出来的图是方形
PS:当然也可以自己定制宽高比(固定纵横比),通过 setCustomRatio(int ratioX, int ratioY); 进行设置。
大概常用的属性就这些,还有一些其它的属性,需要的可以去 GitHub 看下该库的详细方法。
接下来到加载图片和裁剪图片:
首先是加载图片,有两种方法:
1、setImageXXX();
2、startLoad(Uri sourceUri, LoadCallback callback);
其中第一种是同步,第二种则是异步。
第一种如果 bitmap 过大会出现异常,第一种可以加载 bitmap, Resource, Drawable, Uri;第二种直接加载 Uri 最有效的 bitmap ,无需理会文件路径和图片尺寸,callback 中包含两个方法,一个 onSuccess(),一个 onError()。
其次是裁剪图片,也有两种方法:
1、getCroppedBitmap();
2、startCrop(Uri saveUri, CropCallback cropCallback, SaveCallback saveCallback);
其中第一种是同步,第二种则是异步。
第一种用于setImageXXX(); 不保存裁剪后的 bitmap;第二种裁剪的是 Uri 最大尺度的 bitmap ,裁剪后保存在 saveUri,两个callback 中都包含两个方法,一个 onSuccess(),一个 onError(),第一个 callback 中的 onSuccess(Bitmap cropped) 可以获得裁剪后的 bitmap;第二个 callback 中的 onSuccess(Uri outputUri) 可以获得裁剪后的 Uri。
库名:SimpleCropView
GitHub:https://github.com/IsseiAoki/SimpleCropView
下面来简单的说说怎么使用。
首先需要在 build.gradle 里面加入依赖:
dependencies { ... 'com.isseiaoki:simplecropview:1.1.4' ... }
接着在布局 XML 里面跟普通的控件一样去使用:
<com.isseiaoki.simplecropview.CropImageView android:id="@+id/CropImageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerInside" android:layout_gravity="center" custom:scv_handle_size="10dp" custom:scv_touch_padding="10dp" custom:scv_background_color="#000000" custom:scv_handle_color="#FFFFFF" custom:scv_guide_color="#FFFFFF" custom:scv_overlay_color="#aa1c1c1c" custom:scv_frame_color="#FFFFFF" custom:scv_handle_show_mode="show_always" custom:scv_guide_show_mode="show_on_touch" />
注意加上(xmlns:custom="http://schemas.android.com/apk/res-auto")。
其 xml 属性以及对应的方法:
序号 | XML Attribute (custom:) | Related Method | Description |
---|---|---|---|
1 | scv_img_src | setImageResource(int resId) | Set source image. |
2 | scv_crop_mode | setCropMode(CropImageView.CropMode mode) | Set crop mode. |
3 | scv_background_color | setBackgroundColor(int bgColor) | Set view background color. |
4 | scv_overlay_color | setOverlayColor(int overlayColor) | Set image overlay color. |
5 | scv_frame_color | setFrameColor(int frameColor) | Set the image cropping frame color. |
6 | scv_handle_color | setHandleColor(int frameColor) | Set the handle color. |
7 | scv_guide_color | setGuideColor(int frameColor) | Set the guide color. |
8 | scv_guide_show_mode | setGuideShowMode(CropImageView.ShowMode mode) | Set guideline show mode. |
9 | scv_handle_show_mode | setHandleShowMode(CropImageView.ShowMode mode) | Set handle show mode. |
10 | scv_handle_size | setHandleSizeInDp(int handleDp) | Set handle radius in density-independent pixels. |
11 | scv_touch_padding | setTouchPaddingInDp(int paddingDp) | Set the image cropping frame handle touch padding(touch area) in density-independent pixels. |
12 | scv_min_frame_size | setMinFrameSizeInDp(int minDp) | Set the image cropping frame minimum size in density-independent pixels. |
13 | scv_frame_stroke_weight | setFrameStrokeWeightInDp(int weightDp) | Set frame stroke weight in density-independent pixels. |
14 | scv_guide_stroke_weight | setGuideStrokeWeightInDp(int weightDp) | Set guideline stroke weight in density-independent pixels. |
15 | scv_crop_enabled | setCropEnabled(boolean enabled) | Set whether to show the image cropping frame. |
16 | scv_initial_frame_scale | setInitialFrameScale(float initialScale) | Set Set initial scale of the frame.(0.01 ~ 1.0) |
17 | scv_animation_enabled | setAnimationEnabled(boolean enabled) | Set whether to animate. |
18 | scv_animation_duration | setAnimationDuration(int durationMillis) | Set animation duration. |
19 | scv_handle_shadow_enabled | setHandleShadowEnabled(boolean handleShadowEnabled) | Set whether to show handle shadows. |
下面介绍一些基本的常用的设置:
1、handle(拖块) 的大小和 padding,分别对应XML属性表的10,11
2、guide(辅助线条) 和 frame (边框)的粗细,分别对应XML属性表的14,13
3、handle(拖块)和 guide(辅助线条)显示模式,有显示(SHOW_ALWAYS,默认),不显示(NOT_SHOW),触摸时才显示(SHOW_ON_TOUCH),分别对应XML属性表的9,8
4、裁剪框的初始大小,通过 setInitialFrameScale(float initialScale); 设置,其参数范围:0.01~1.0(default),分别对应效果:
5、裁剪框最小尺寸,通过 setMinFrameSizeInDp(int Mindp); 去设置,默认是50。
6、裁剪框模式,比如比例,形状(方,圆)。通过 setCropMode(CropImageView.CropMode.RATIO_16_9); 其参数属性有:
*FIT_IMAGE, 固定纵横比,与原始图片相同的比例
*RATIO_4_3, 固定纵横比,宽高比4:3
*RATIO_3_4, 固定纵横比,宽高比3:4
*SQUARE(default), 固定纵横比,1:1正方形
*RATIO_16_9, 固定纵横比,宽高比16:9
*RATIO_9_16, 固定纵横比,宽高比9:16
*FREE, 非固定纵横比
*CUSTOM, 定制的
*CIRCLE, 圆形
*CIRCLE_SQUARE, 圆形,但裁剪出来的图是方形
PS:当然也可以自己定制宽高比(固定纵横比),通过 setCustomRatio(int ratioX, int ratioY); 进行设置。
大概常用的属性就这些,还有一些其它的属性,需要的可以去 GitHub 看下该库的详细方法。
接下来到加载图片和裁剪图片:
首先是加载图片,有两种方法:
1、setImageXXX();
2、startLoad(Uri sourceUri, LoadCallback callback);
其中第一种是同步,第二种则是异步。
第一种如果 bitmap 过大会出现异常,第一种可以加载 bitmap, Resource, Drawable, Uri;第二种直接加载 Uri 最有效的 bitmap ,无需理会文件路径和图片尺寸,callback 中包含两个方法,一个 onSuccess(),一个 onError()。
其次是裁剪图片,也有两种方法:
1、getCroppedBitmap();
2、startCrop(Uri saveUri, CropCallback cropCallback, SaveCallback saveCallback);
其中第一种是同步,第二种则是异步。
第一种用于setImageXXX(); 不保存裁剪后的 bitmap;第二种裁剪的是 Uri 最大尺度的 bitmap ,裁剪后保存在 saveUri,两个callback 中都包含两个方法,一个 onSuccess(),一个 onError(),第一个 callback 中的 onSuccess(Bitmap cropped) 可以获得裁剪后的 bitmap;第二个 callback 中的 onSuccess(Uri outputUri) 可以获得裁剪后的 Uri。
相关文章推荐
- 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析
- 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)
- 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析
- SimpleCropView 裁剪图片
- 一个简单的图片裁剪Activity:android-crop
- 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- 15_android-WebView的简单实用介绍
- android实用案例-获取本地图片/拍照 后进行图片裁剪
- android,侧滑栏SlidingLayout、ViewPager实现画廊、简单用viewpager实现画廊、圆形图片、简单的跑马灯动画效果、可拖拽的弹簧式水泡动画集合
- Android裁剪图片最简单方法(调用系统的)
- android-smart-image-view图片加载简单使用
- 【Android实战】记录自学自定义GifView过程,能同时支持gif和其他图片!【实用篇】
- Android-继承ImageView得到圆图片头像方法-非常方便
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用
- android自定义View实现裁剪图片功能,不使用系统的
- Android [应用代码] 简单调用系统的图片裁剪功能
- 【Android 开发】:UI控件之 ImageView 实现适屏和裁剪图片的功能
- Android裁剪图片最简单方法(调用系统的)