2017-06-21 6 views

Antwort

0

diese Klasse verwendet, um einen Kreis zu erstellen:

public class Circle extends View { 

    private static final int START_ANGLE_POINT = 270; 

    private final Paint paint; 
    private RectF rect; 

    private float angle; 

    public Circle(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     final int strokeWidth = 60; 

     Point[] points = new Point[3]; 
     points[0] = new Point(7, 13); 
     points[1] = new Point(13, 19); 
     points[2] = new Point(21, 9); 

     paint = new Paint(); 
     paint.setAntiAlias(true); 
     paint.setStyle(Paint.Style.FILL); 
     //Circle color 
     paint.setColor(Theme.darkRedColour()); 

     //Initial Angle (optional, it can be zero) 
     angle = 0; 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     if (rect == null) { 

      DisplayMetrics metrics = App.getAppContext().getResources().getDisplayMetrics(); 
      int densityDpi = (int)metrics.density; 
      densityDpi = 3; 

      int canvasW = getWidth(); 
      int canvasH = getHeight(); 
      Point centerOfCanvas = new Point(canvasW/2, canvasH/2); 
      int rectW = 100; // * (densityDpi - 1); 
      int rectH = 100; // * (densityDpi - 1); 
      int left = centerOfCanvas.x - (rectW/2); 
      int top = centerOfCanvas.y - (rectH/2); 
      int right = centerOfCanvas.x + (rectW/2); 
      int bottom = centerOfCanvas.y + (rectH/2); 
      rect = new RectF(left, top, right, bottom); 
     } 

     super.onDraw(canvas); 

     canvas.drawArc(rect, START_ANGLE_POINT, angle, true, paint); 
    } 

    public float getAngle() { 
     return angle; 
    } 

    public void setAngle(float angle) { 
     this.angle = angle; 
    } 
    } 

Dann einen AnimiationListener verwendet und den Winkel aktualisiert.