title: How to redraw correctly angle on circle, which starts from current time, to the point affected on the circle?
body: <p>I have a circle drawn on canvas. On top on this circle I draw an angle, which starts from part of the circle equal to current time.</p>
  
  <p>Then onTouchEvent, the angle should be redrawn from start point (current time), to end point, based on a point on the circle.</p>
  
  <p><strong>The problem is with calculation dynamically sweep angle in method onTouchEvent.</strong> </p>
  
  <p>I've tried different calculations, taken from different Stackoverflow posts / suggestions, and none did not work according to my expectation. The reaction of the angle, onTouchEvent, was always a bit unpredicted.</p>
  
  <p>My code snippet:</p>
  
  <pre><code>@Override
  public void draw(Canvas canvas) {
      super.draw(canvas);
  
      int radius = getRadius();
      int startAngle = getStartAngle();
  
      canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, this.bkgPaint);
  
      this.arcRect = new RectF((getWidth() / 2) - radius, (getHeight() / 2) - radius, (getWidth() / 2) + radius, (getHeight() / 2) + radius);
      canvas.drawArc(this.arcRect, startAngle, sweepAngle, true, arcPaint);
  }
  
  @Override
  public boolean onTouchEvent(MotionEvent e) {
      if (e.getAction() == MotionEvent.ACTION_MOVE) {
          sweepAngle = (int) ((360.0D + Math.toDegrees(Math.atan2(e.getX() - 360.0D, 360.0D - e.getY()))) % 360.0D);
          invalidate();
      }
      return true;
  }
  
  private int getStartAngle() {
      Calendar cal = Calendar.getInstance();
      int minutes = cal.get(Calendar.HOUR_OF_DAY) * 60 + cal.get(Calendar.MINUTE);
      if (minutes &gt; 720) {
          minutes -= 720;
      }
      int angle = minutes / 2;
      return (angle += 270) % 360;
  }
  
  private int getRadius() {
      return ((80 * getWidth()) / 100) / 2;
  }
  </code></pre>