Android 实现圆角图片的简单实例
在 Android 中,我们经常需要设置一个圆角的图片,比如在头像、列表中显示图片等场景下。本文将介绍如何使用 Android 中的 Bitmap 和 Shape 来实现圆角图片的简单例子。
一、使用 Bitmap
首先,我们需要创建一个 Bitmap 对象,然后将其转换为一个圆形的图片。具体步骤如下:
1. 创建一个 Bitmap 对象:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
在这里,我们需要指定要处理的图片资源,此处为 R.drawable.image。
2. 创建一个新的 Bitmap 对象,该对象的大小需要与原图一样,并且绘制一个圆形:
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.RED); float centerX = bitmap.getWidth() / 2; float centerY = bitmap.getHeight() / 2; float radius = Math.min(centerX, centerY); canvas.drawCircle(centerX, centerY, radius, paint);
请注意,在这里我们使用 Canvas 来绘制圆形。其中,setAntiAlias(true) 表示开启抗锯齿,以免图片出现锯齿。
3. 将原图片插入到圆形图片中:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, 0, 0, paint);
这里,我们需要使用 PorterDuff.Mode.SRC_IN 模式,是为了保证只绘制原图片和圆形图片重合的部分。
4. 最后,我们得到了一个圆形的 Bitmap 对象。如果需要设置圆角,可以通过对 Bitmap 对象进行剪裁的方式来实现。
Bitmap bitmap2 = Bitmap.createBitmap(output.getWidth(), output.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas2 = new Canvas(bitmap2); Rect rect = new Rect(0, 0, output.getWidth(), output.getHeight()); RectF rectF = new RectF(rect); float roundPx = Math.min(output.getWidth(), output.getHeight()) / 2; Paint paint2 = new Paint(Paint.ANTI_ALIAS_FLAG); paint2.setColor(Color.RED); canvas2.drawRoundRect(rectF, roundPx, roundPx, paint2); paint2.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas2.drawBitmap(output, 0, 0, paint2); imageView.setImageBitmap(bitmap2);
其中,使用 drawRoundRect() 方法来绘制一个圆角矩形。
二、使用 Shape
除了使用 Bitmap,我们还可以使用 Shape 来创建一个圆角矩形。具体步骤如下:
1. 在 res/drawable 目录下创建一个 XML 文件,比如 round_bg.xml,内容如下:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="50dp" />
</shape>
在这里,我们使用了 shape 元素,并且指定了它的形状为矩形。然后,使用 solid 元素来设置填充颜色,使用 corners 元素来设置圆角半径。
2. 在布局文件中,使用 ImageView 组件来显示该形状:
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/round_bg"
android:src="@drawable/image" />
其中,使用 background 属性来引用刚创建的形状文件,使用 src 属性来设置要显示的图片资源。
三、总结
本文介绍了使用 Bitmap 和 Shape 两种方式来创建圆角图片的例子。
其中,使用 Bitmap 的方法比较灵活,可以通过对 Bitmap 对象进行剪裁来实现不同的形状;而使用 Shape 的方法则比较简单,可以通过 XML 文件的方式来创建形状,不需要编写 Java 代码。
实际开发中,根据场景选择不同的方法来实现圆角图片。
