欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android中圆角图像生成方法

程序员文章站 2022-06-16 10:54:41
本文实例讲述了android中圆角图像生成方法。分享给大家供大家参考。具体分析如下: 在android开发中为了美观,常常要求imageview中显示出圆角图像的效果,这...

本文实例讲述了android中圆角图像生成方法。分享给大家供大家参考。具体分析如下:

在android开发中为了美观,常常要求imageview中显示出圆角图像的效果,这个如何实现?

这里总结了网上的最优方法:将图像处理成圆角,然后在加载给imageview显示,代码如下:

public bitmap getroundedcornerbitmap(bitmap bitmap, int pixels) {
bitmap output = bitmap.createbitmap(bitmap.getwidth(), bitmap
 .getheight(), config.argb_8888);
canvas canvas = new canvas(output);
final int color = 0xff424242;
final paint paint = new paint();
final rect rect = new rect(0,0,bitmap.getwidth(),bitmap.getheight());
final rectf rectf = new rectf(rect);
paint.setantialias(true);
canvas.drawargb(0, 0, 0, 0);
paint.setcolor(color);
canvas.drawroundrect(rectf, pixels, pixels, paint);
paint.setxfermode(new porterduffxfermode(mode.src_in));
canvas.drawbitmap(bitmap, rect, rect, paint);
return output;
}

附上一张效果图:

android中圆角图像生成方法

这个方法没有一点问题,但是,如果加载的图像过大的话,这种方法需要耗时,这样对于大量的imageview而言,刷新就会出现卡顿或者闪烁的问题了,如何解决这个问题呢?

我觉得,如果是这样,那么我们只能舍弃这种方法,退而求其次,我们够建两层imageview,第一层是原始方角图像a,第二层是一个特殊的资源图b,它的大小与原图一样,我们假设a按照上面的方法得到的圆角图像为c,那么定义图像t=a-c,然后我们把t改为我们需要的背景颜色,这样b=t(背景色),最后的效果就是a在下面,b在上面,四个角是圆角效果,方角图像被覆盖在了b下面了。这样做就省去了直接图像处理所造成的耗时问题。但是,如果是图像大小较小,数量不大的情况下, 本人还是建议使用第一种方法,毕竟原版的效果好,盗版还是盗版啊呵呵!

希望本文所述对大家的android程序设计有所帮助。