使用RoundedBitmapDrawable快速生成圆角和圆形图片
来源:互联网 发布:模拟太阳系的软件 编辑:程序博客网 时间:2024/05/13 01:19
转自:http://blog.csdn.net/hahashui123/article/details/46929909
在今年I/O大会之前,如果要实现圆角或者圆形图片可以自定义View,比如之前的博文《Android 自定义UI View - 03 圆形图片控件》或者通过一些第三方库来实现,比如下面这个:
- RoundedImageView by vinc3m1
但是在I/O大会之后,Google发布了新的Support lib,其中有一个是RoundedBitmapDrawable类,通过这个类可以很容易实现圆角和圆形图片。
可以直接在上一个工程的基础上修改部分代码实现,具体实现步骤如下:
1.首先需要添加support-v4依赖
在build.gralde的dependencies中添加下面代码:
1234567
dependencies {//...其他依赖compile 'com.android.support:support-v4:21.+'compile 'com.android.support:appcompat-v7:21.+'compile 'com.android.support:support-v4:21.+'}
添加完成后需要同步一下Gradle,同步成功后就可以使用RoundedBitmapDrawable类。
2.创建RoundedBitmapDrawable对象
- 生成圆角图片:
12345
Bitmap src = BitmapFactory.decodeResource(getResources(), imageId); //获取Bitmap图片RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), src); //创建RoundedBitmapDrawable对象roundedBitmapDrawable.setCornerRadius(100); //设置圆角半径(根据实际需求)roundedBitmapDrawable.setAntiAlias(true); //设置反走样image.setImageDrawable(roundedBitmapDrawable); //显示圆角图片
生成圆角图片只需要根据图片大小设置合理的圆角半径即可,效果如下:
- 生成圆形图片
由于RoundedBitmapDrawable
类没有直接提供生成圆形图片的方法,所以生成圆形图片首先需要对原始图片进行裁剪,将图片裁剪成正方形,最后再生成圆形图片,具体实现如下:
12345678910111213141516
Bitmap src = BitmapFactory.decodeResource(getResources(), imageId);Bitmap dst;//将长方形图片裁剪成正方形图片if (src.getWidth() >= src.getHeight()){dst = Bitmap.createBitmap(src, src.getWidth()/2 - src.getHeight()/2, 0, src.getHeight(), src.getHeight());}else{dst = Bitmap.createBitmap(src, 0, src.getHeight()/2 - src.getWidth()/2, src.getWidth(), src.getWidth());}RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), dst);roundedBitmapDrawable.setCornerRadius(dst.getWidth() / 2); //设置圆角半径为正方形边长的一半roundedBitmapDrawable.setAntiAlias(true);image.setImageDrawable(roundedBitmapDrawable);
这样通过简单的转换就可以将图片裁剪成圆形图片效果如下:
更多关于RoundedBitmapDrawable方法可以参考官方API文档。
参考:
RoundedBitmapDrawable API
Google I/O 2014 – What’s New In Android
0 0
- 使用RoundedBitmapDrawable快速生成圆角和圆形图片
- 使用RoundedBitmapDrawable快速生成圆角和圆形图片
- [Material Design]使用RoundedBitmapDrawable快速生成圆角和圆形图片
- [Material Design]使用RoundedBitmapDrawable快速生成圆角和圆形图片
- ImageView的圆角或圆形使用原生support v4中的RoundedBitmapDrawable实现
- 【Android】【Drawable】图片圆形化(RoundedBitmapDrawable)
- android RoundedBitmapDrawable最简单方式实现圆角图片(一)
- 使用Glide动态加载圆形图片和圆角图片
- 使用Glide动态加载圆形图片和圆角图片
- 图片圆角和圆形
- Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角
- Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角
- Android 使用Glide实现圆形和圆角图片
- Android 圆角图片及圆形图片的生成
- Android开发:使用Glide动态加载圆形图片和圆角图片--图片开发框架
- 使用BitmapShader实现圆形,圆角图片
- Glide使用 加载网络图片 圆形图片 圆角图片
- 简单实现图片圆角和圆形
- JavaScript学习笔记一
- Unity NGUI内特效与UI层级关系的设置
- fflush()函数:更新缓冲区
- Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
- Xlistview
- 使用RoundedBitmapDrawable快速生成圆角和圆形图片
- Hibernate连接查询join
- day06-1static 使用静态方法并生成文档取最值,选择排序,冒泡排序,位置交换,打印数组元素
- IOS开发 使用地图 MapKit
- Android之内存管理-内存监测-内存优化
- Perl中$1的含义
- SDUTACM 双向队列
- HDU2204 第一道...超级水的容斥
- 基于MFC的Windows多国语版本软件 —— 加载资源dll