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

时间:2014-04-22 10:29:12

标签: android view draw

我想在扩展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);
    }

}

我想要的只是在最初创建的蓝色弧上绘制一个黄色圆弧。有什么帮助吗?

0 个答案:

没有答案