0
点赞
收藏
分享

微信扫一扫

报This custom view should extend androidx.appcompat.widget.AppCompatImageView instead错误

 问题就是在于public class RoundImageView extends View,而是应该继承于自定义 RoundImageView 继承自 ImageView

eg:

package cn.twle.android.imageview;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.Region;
import android.util.AttributeSet;
import android.widget.ImageView;
public class RoundImageView extends ImageView {
private Bitmap mBitmap;
private Rect mRect = new Rect();
private PaintFlagsDrawFilter pdf = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG);
private Paint mPaint = new Paint();
private Path mPath=new Path();
public RoundImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

//传入一个Bitmap对象
public void setBitmap(Bitmap bitmap) {
    this.mBitmap = bitmap;
}

private void init() {
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    mPaint.setAntiAlias(true);// 抗锯尺
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    if(mBitmap == null)
    {
        return;
    }
    mRect.set(0,0,getWidth(),getHeight());
    canvas.save();
    canvas.setDrawFilter(pdf);
    mPath.addCircle(getWidth() / 2, getWidth() / 2, getHeight() / 2, Path.Direction.CCW);
    canvas.clipPath(mPath, Region.Op.REPLACE);
    canvas.drawBitmap(mBitmap, null, mRect, mPaint);
    canvas.restore();
}
}

然后就可以运行了


举报

相关推荐

0 条评论