0
点赞
收藏
分享

微信扫一扫

android 中给图片加圆角效果


public static Bitmap getRoundCornerBitmap(Bitmap bitmap, float roundPX){
int width = bitmap.getWidth();
int height = bitmap.getHeight();

Bitmap bitmap2 = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap2);

final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, width, height);
final RectF rectF = new RectF(rect);

paint.setColor(color);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
canvas.drawRoundRect(rectF, roundPX, roundPX, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);

return bitmap2;
}



用法demo:   XXX.getRoundCornerBitmap(BitmapObj, 10.0f);

另一种方法就是用XML实现,原理就是遮罩效果,如果有童鞋做过web开发的就知道在CSS中有一个叫层的概念,android中的圆角也是利用这中原理实现的:


一般来说图片加圆角可以使用 Java 的方式来进行, 对图片略加处理即可, 但也可以使用纯XML+Nice-Patch图片来进行, 这样的速度会更快. 如果背景是纯色的情况下建议使用此方法.


原理则是利用frameLayout在图片上加一个遮盖图片, 从而达到圆角效果.


背景图片:



一张中间透明, 四个边角带有颜色的遮盖图片即可, 可以使用ps画一个带圆角的矩形, 然后反选并填充边角颜色即可.


参考图片如下


​​​​

Layout文件:


<!-- profile image -->
<framelayout android:layout_height="48dp" android:layout_width="48dp">
<imageview android:id="@+id/profile_image" android:layout_height="fill_parent" android:layout_width="fill_parent">
<!-- image corner -->
<imageview android:background="@drawable/images_border_radius" android:layout_height="fill_parent" android:layout_width="fill_parent">
</imageview>
</imageview>
</framelayout>



其中第一个ImageView为目标图片, 而第一个ImageView则为遮盖层.

举报

相关推荐

0 条评论