android 中给图片加圆角效果

简介:
在android给图片添加圆角效果有两种方法,一种是用java代码来重绘图片,另一种方法是用xml来实现,这里给出一个Java实现重绘制图片的方法:
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中的圆角也是利用这中原理实现的:

demo引自OSchina:http://www.oschina.net/question/54100_34033

一般来说图片加圆角可以使用 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则为遮盖层.

相关文章
|
4月前
|
XML Java Android开发
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
45 0
|
4月前
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
181 0
|
4月前
|
XML JSON Java
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
72 0
|
24天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
22 1
|
4月前
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
55 0
|
4月前
|
Android开发
[Android]制作9-Patch图片
[Android]制作9-Patch图片
42 0
|
4月前
|
XML JSON Android开发
Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)
Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)
50 0
|
4月前
|
XML 缓存 Java
Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)
Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)
123 0
|
4月前
|
XML 算法 Java
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
111 0
|
4月前
|
存储 Android开发
Android Studio开发之存储卡的文件操作讲解及实战(附源码 在存储卡上读写文本文件和图片文件)
Android Studio开发之存储卡的文件操作讲解及实战(附源码 在存储卡上读写文本文件和图片文件)
55 0