使用RoundedBitmapDrawable快速生成圆角和圆形图片

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

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

这里写图片描述

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

但是在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值