如何从另一个方法调用onDraw方法以动态绘制?

问题描述 投票:1回答:1

我想从扩展View的类中的另一个方法(例如setProgress)重画一个视图。我该怎么做。

我的观看课是

public class SpinView extends View {
    private Paint paint;
    private Context context;
    private Canvas canvas;
    private RectF arcOval;

    public SpinView(Context context) {
        super(context);
        this.context = context;

    }
    public SpinView(Context context, AttributeSet attrs) {
        super(context, attrs, 0);
        this.context = context;
    }

    public SpinView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.context = context;
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        this.canvas = canvas;
        Display d = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        int width = d.getWidth();
        int height = d.getHeight();
        arcOval = new RectF((width/2-50), (height/2-50), (width/2+50), (height/2+50));
//      RectF arcOval = new RectF(200, 200, 300, 300);
        paint = new Paint();
        paint.setColor(Color.BLUE);
        paint.setStrokeWidth(10);
        paint.setAntiAlias(true);
        paint.setStrokeCap(Paint.Cap.ROUND);
        paint.setStyle(Paint.Style.STROKE);

        canvas.drawArc(arcOval, 270f, 360, false, paint);
    }

    protected void setProgress(float angle){
        paint = new Paint();
        paint.setColor(Color.YELLOW);
        paint.setStrokeWidth(10);
        paint.setAntiAlias(true);
        paint.setStrokeCap(Paint.Cap.ROUND);
        paint.setStyle(Paint.Style.STROKE);

        canvas.drawArc(arcOval, 270f, angle, false, paint);
    }

}

我只想在最初创建的蓝色圆弧上绘制黄色的圆弧。有帮助吗?

android view draw
1个回答
0
投票

您可以使用invalidate()方法再次调用ondraw

© www.soinside.com 2019 - 2024. All rights reserved.