android webview设置圆角 自定义view

public class RoundedWebView extends WebView {
    private Context context;

    private int width;

    private int height;

    private int radius;

    public RoundedWebView(Context context) {
        super(context);
        initialize(context);
    }

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

    private void initialize(Context context) {
        this.context = context;
    }

   
    @Override
    protected void onSizeChanged(int newWidth, int newHeight, int oldWidth, int oldHeight) {
        super.onSizeChanged(newWidth, newHeight, oldWidth, oldHeight);

        width = newWidth;

        height = newHeight;
        
        //设置圆角
        radius = ConvertUtils.dp2px( 15f);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Path path = new Path();

        path.setFillType(Path.FillType.INVERSE_WINDING);
        //顺时针自定义圆角 
        float radii[] = {0,0,0,0,radius,radius,radius,radius};
        path.addRoundRect(new RectF(0, getScrollY(), width, getScrollY() + height), radii, Path.Direction.CW);

        canvas.drawPath(path, createPorterDuffClearPaint());
    }
    //使用Porter Duff Xfer模式从屏幕"清除"该区域
    private Paint createPorterDuffClearPaint() {
        Paint paint = new Paint();

        paint.setColor(Color.TRANSPARENT);

        paint.setStyle(Paint.Style.FILL);

        paint.setAntiAlias(true);

        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

        return paint;
    }
}

版权声明:本文为qq_23045311原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。