原文出处:http://www.tuicool.com/articles/eIBbArA

上一篇 《[Material Design]使用Palette类提取图片的颜色信息》 主要介绍了如何提取图片的一些特定颜色,不过如果你稍微注意一下,你会发现Demo示意图还有个小细节那就是图片列表的图片都是圆角的,那么今天就来说说如何快速生成圆角或者圆形图片。

在今年I/O大会之前,如果要实现圆角或者圆形图片可以自定义View,比如之前的博文 《Android 自定义UI View - 03 圆形图片控件》 或者通过一些第三方库来实现,比如下面这个:

  • RoundedImageView by vinc3m1

但是在I/O大会之后,Google发布了新的Support lib,其中有一个是 RoundedBitmapDrawable 类,通过这个类可以很容易实现圆角和圆形图片。

可以直接在上一个工程的基础上修改部分代码实现,具体实现步骤如下:

1、首先需要添加support-v4依赖

在build.gralde的dependencies中添加下面代码:

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对象

生成圆角图片:

Bitmap src = BitmapFactory.decodeResource(getResources(), imageId); //获取Bitmap图片RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), src); //创建RoundedBitmapDrawable对象roundedBitmapDrawable.setCornerRadius( 100 ); //设置圆角半径(根据实际需求)roundedBitmapDrawable.setAntiAlias( true ); //设置反走样image.setImageDrawable(roundedBitmapDrawable); //显示圆角图片

生成圆角图片只需要根据图片大小设置合理的圆角半径即可,效果如下:

生成圆形图片
由于 RoundedBitmapDrawable 类没有直接提供生成圆形图片的方法,所以生成圆形图片首先需要对原始图片进行裁剪,将图片裁剪成正方形,最后再生成圆形图片,具体实现如下:

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

使用RoundedBitmapDrawable快速生成圆角和圆形图片相关推荐

  1. android xml 圆形图片,Android ImageView实现圆角,圆形图片

    UI设计中,为了有更好的效果,用户的头像很多以圆形方式显示,其实现的步骤 1 在res/values/attrs中添加 2 自定义View,CustomImageView.java package c ...

  2. 成品app直播源码,设置图片圆角和圆形图片

    成品app直播源码,设置图片圆角和圆形图片 在项目根目录下的build.gradle文件中,增加gradle地址: allprojects {repositories {google()jcenter ...

  3. Android图片缓存框架 - Fresco实现圆角或圆形图片 (四)

    目录 1.Fresco 简介 2. Fresco 文档 3. Fresco开发步骤 4. Fresco加载图片6种方式 5. Drawees xm属性设置 6 Fresco实现圆角或圆形图片 6.1 ...

  4. Glide 加载圆角、圆形图片

    谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app.我 ...

  5. iOS设置圆角及圆形图片

    方方正正的样式往往会显得很生硬,而圆角的样式会让人产生别样的亲切感,现在越来越多地用到圆角,诸如用户头像之类的图片也大都用圆形来显示,本文就介绍如何设置按钮.文本框的圆角以及制作圆形的图片. 先来看看 ...

  6. 二维码图片如何快速生成

    1.今天跟大家介绍一下怎么快速生成二维码图片,首先我们打开Excel,新建工作簿. ​ 2.然后在任意一单元格录入二维码内容,比如本文这里录入二维码图片如何快速生成. 3.接着我们点击图片工具(Exc ...

  7. MYSQL圆角矩形表示_android 利用Bitmap获取圆角矩形、圆形图片

    1.在很多时候,我们要显示图片资源,需要将他的资源显示为圆角的:示例源码如下: public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,fl ...

  8. 小游戏/小程序如何快速生成分享海报图

    在应用开发过程中,我们会遇到各种各样的分享场景,例如邀请.拉新.分享内容等.分享链接是 Web 时代常见的分享形式,实现也相对容易.但是现在人们时间大都花在了 APP 上,所以应用之间的分享越来越重要 ...

  9. php裁剪图片圆角圆形,php生成圆角图片代码

    搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. $image_file = $_GET['src']; $corner_radi ...

最新文章

  1. 怎样推断一棵树是否是平衡二叉树
  2. 利用SoapUI 测试web service的一些问题总结
  3. mysql双主数据一致性_mysql双主复制的主备数据一致性知多少
  4. Android makefile编译流程(二)
  5. Cocos2d之Ref类与内存管理使用详解
  6. java 容器类 面试_校招面试之Java容器
  7. 狭义相对论的一点点理解
  8. centos7 中彻底卸载mysql
  9. 一个优质软件测试工程师简历的范文(答应我一定要收藏起来)
  10. 搭建excel在线编辑服务器,开源免费!自动动手搭建一款更加强大的在线Excel工具...
  11. 系统封装_Ghost光盘制作
  12. DGV:人类基因组结构变异数据库
  13. 家里的网络太慢了,怎么办?
  14. ‘在路上’问卷调查结果与分析
  15. Android如何自定义服务器DynamicMockServer的使用
  16. SQL Server 数据库
  17. 计算机网络必看之·你确定了解应用层吗?(下)12/3最新补充
  18. AGNES 数据挖掘算法 C语言
  19. LIKE语句通配符:%|_|[]
  20. 帝国cms首页写php,帝国cms常用标签汇总

热门文章

  1. OSPF中DR选举机制详解
  2. python并发入门(part5 event对象)
  3. draw.io二次开发(2)文件解读
  4. Java 基础知识 练习
  5. C++模板详解——使用篇
  6. C++静态库与动态库(简介)
  7. 事件响应的优先级、stopProgapation禁止下层组件响应
  8. 经典网页设计:12个简约风格的网站作品
  9. Excel 计算时间差
  10. 回复:lerit的关于对象中字段的初始化问题