2012-04-02 3 views
1

рисую дугу onDraw(canvas):Динамически рисовать дугу

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new MyView(this)); 
} 

public class MyView extends View { 

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

    @Override 
    public void onDraw(Сanvas canvas) { 
     super.onDraw(canvas); 
     float width = (float) getWidth(); 
     float height = (float) getHeight(); 
     float radius; 
     if (width > height) { 
      radius = height/4; 
     } else { 
      radius = width/4; 
     } 

     final Paint paint = new Paint(); 
     paint.setColor(Color.WHITE); 
     paint.setStrokeWidth(50); 
     paint.setStyle(Paint.Style.STROKE); 

     float center_x, center_y; 
     center_x = width/2; 
     center_y = height/4; 
     final RectF oval = new RectF(); 
     oval.set(center_x - radius, center_y - radius, center_x + radius, 
       center_y + radius); 

     paint.setStyle(Paint.Style.STROKE); 
     center_x = width/2; 
     center_y = height * 3/4; 
     oval.set(center_x - radius, center_y - radius, center_x + radius, 
       center_y + radius); 

     canvas.drawArc(oval, -90, 45, false, paint); 
    } 
} 

Скажите, как динамически изменять значение sweepAngle() == 45 в строке canvas.drawArc(oval, -90, 45, false, paint)?

ответ

1

Одним из решений было бы иметь поле sweepAngle в вашем классе и использовать его вместо 45 при рисовании дуги. Затем установите таймер, который периодически добавляет sweepAngle и перерисовывает холст.

+0

Благодарим за помощь. – monomi