[Material Design]使用RoundedBitmapDrawable快速生成圆角和圆形图片
来源:互联网 发布:淘宝头条申请 编辑:程序博客网 时间:2024/06/06 21:41
在今年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
1 0
- [Material Design]使用RoundedBitmapDrawable快速生成圆角和圆形图片
- [Material Design]使用RoundedBitmapDrawable快速生成圆角和圆形图片
- 使用RoundedBitmapDrawable快速生成圆角和圆形图片
- 使用RoundedBitmapDrawable快速生成圆角和圆形图片
- ImageView的圆角或圆形使用原生support v4中的RoundedBitmapDrawable实现
- 【Android】【Drawable】图片圆形化(RoundedBitmapDrawable)
- Android Material Design(6) CircularReveal圆形扩散动画的使用
- android RoundedBitmapDrawable最简单方式实现圆角图片(一)
- 使用Glide动态加载圆形图片和圆角图片
- 使用Glide动态加载圆形图片和圆角图片
- 图片圆角和圆形
- 使用Material Design Tint和视图详解
- Material Design之CollapsingToolbarLayout 和 TabLayout使用
- Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角
- Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角
- Android 使用Glide实现圆形和圆角图片
- [Material Design]使用Toolbar + DrawerLayout快速实现高大上菜单侧滑
- [Material Design]使用Toolbar + DrawerLayout快速实现高大上菜单侧滑
- 中国广告行业现状
- leetcode笔记:4Sum
- PopupWindow的一些属性
- Llama-impala on yarn的中间协调服务
- Hadoop--Hadoop2.X编译安装和实验--练习2
- [Material Design]使用RoundedBitmapDrawable快速生成圆角和圆形图片
- dotfuscator使用方法
- IOS 项目中必须避免的几种循环引用的问题
- 优酷上传视频代码
- Spring-data-redis:特性与实例
- UITableView优化技巧
- bluetooth4.0 协议概略
- 对C语言中的字符串,字符数组以及用指针表示字符串的理解
- 文件描述符资料-------15--7-17:文件描述符和文文件对应