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; }
附上一张效果图:
这个方法没有一点问题,但是,如果加载的图像过大的话,这种方法需要耗时,这样对于大量的imageview而言,刷新就会出现卡顿或者闪烁的问题了,如何解决这个问题呢?
我觉得,如果是这样,那么我们只能舍弃这种方法,退而求其次,我们够建两层imageview,第一层是原始方角图像a,第二层是一个特殊的资源图b,它的大小与原图一样,我们假设a按照上面的方法得到的圆角图像为c,那么定义图像t=a-c,然后我们把t改为我们需要的背景颜色,这样b=t(背景色),最后的效果就是a在下面,b在上面,四个角是圆角效果,方角图像被覆盖在了b下面了。这样做就省去了直接图像处理所造成的耗时问题。但是,如果是图像大小较小,数量不大的情况下, 本人还是建议使用第一种方法,毕竟原版的效果好,盗版还是盗版啊呵呵!
希望本文所述对大家的android程序设计有所帮助。