欢迎访问宙启技术站
智能推送

Android 实现圆角图片的简单实例

发布时间:2023-05-15 06:02:16

在 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 代码。

实际开发中,根据场景选择不同的方法来实现圆角图片。