gpt4 book ai didi

android - 如何在圆形 ImageView 周围绘制边框?

转载 作者:行者123 更新时间:2023-11-29 00:08:58 24 4
gpt4 key购买 nike

我需要使用此类在 ImageView 周围绘制红色边框:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundedImageView extends ImageView {

public RoundedImageView(Context context) {
super(context);
}

public RoundedImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

protected void onDraw(Canvas canvas) {
float radius = 45.0f;
Paint bp= new Paint();
bp.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
bp.setColor(Color.RED);
bp.setStrokeWidth(16);


Path clipPath = new Path();
RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);
canvas.drawRoundRect(rect, radius, radius, bp);
canvas.clipPath(clipPath);

super.onDraw(canvas);
}
}

但是好像没有画边框?而且我不知道我做错了什么?

谁能帮忙吗?

谢谢

最佳答案

好吧,这就是我最后做的:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundedImageView extends ImageView {

private static final int PADDING = 8;
private static final float STROKE_WIDTH = 16f;

private Paint mBorderPaint;

public RoundedImageView(Context context) {
this(context, null);
}

public RoundedImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
setPadding(PADDING, PADDING, PADDING, PADDING);
}

public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initBorderPaint();
}

private void initBorderPaint() {
mBorderPaint = new Paint();
mBorderPaint.setAntiAlias(true);
mBorderPaint.setStyle(Paint.Style.STROKE);
mBorderPaint.setColor(Color.WHITE);
mBorderPaint.setStrokeWidth(STROKE_WIDTH);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(PADDING, PADDING, getWidth() - PADDING, getHeight() - PADDING, mBorderPaint);
}
}

它没有按要求提供圆角,但也不是必须的。这只会在图像周围创建一个边框。

关于android - 如何在圆形 ImageView 周围绘制边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31623966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com