安卓适配器中怎样把图片改成圆形
时间: 2024-12-14 07:28:40 浏览: 5
在Android中,为了将图片转换成圆形显示,通常需要使用`CircleImageView`库或者自定义View来实现。以下是基本步骤:
1. **使用第三方库**:
- `android-circular-image-view`:这是一个流行的库,可以轻松地将任意大小的图片裁剪为圆形。在你的项目中添加依赖,然后在XML布局文件中使用它替换普通的`ImageView`:
```xml
<me.zhanghai.android.widget.CircleImageView
android:id="@+id/image_view"
android:src="@drawable/your_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
```
确保已设置正确的图片资源路径。
2. **自定义视图**(如果不想用库):
- 创建一个新的View类并继承自`ImageView`:
```java
public class CircleImageView extends ImageView {
public CircleImageView(Context context) {
super(context);
}
public CircleImageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CircleImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 使用Bitmap画圆角
Bitmap bitmap = getBitmap();
if (bitmap != null) {
canvas.drawBitmap(getCircleBitmap(bitmap), getBounds().left, getBounds().top, null);
}
}
private Bitmap getCircleBitmap(Bitmap bitmap) {
int size = Math.min(bitmap.getWidth(), bitmap.getHeight());
Bitmap squaredBitmap = Bitmap.createScaledBitmap(bitmap, size, size, true);
return getCroppedCircleBitmap(squaredBitmap);
}
private Bitmap getCroppedCircleBitmap(Bitmap squaredBitmap) {
Bitmap output = Bitmap.createBitmap(squaredBitmap, 0, 0, squaredBitmap.getWidth(), squaredBitmap.getHeight());
BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
RectF rect = new RectF(0, 0, output.getWidth(), output.getHeight());
Canvas canvas = new Canvas(output);
canvas.drawRoundRect(rect, size / 2f, size / 2f, paint);
squaredBitmap.recycle();
return output;
}
}
```
然后在需要的地方实例化这个自定义的`CircleImageView`。
3. **设置图片源**:
将你的图片通过`setImageResource()`、`setImageBitmap()` 或者 `setImageDrawable()` 设置给这个ImageView。
阅读全文