@Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (isRotationEnabled) { // Set the pie rotation directly. final RectF circleOval = pieChart.getCircleOval(); final float centerX = circleOval.centerX(); final float centerY = circleOval.centerY(); float scrollTheta = vectorToScalarScroll(distanceX, distanceY, e2.getX() - centerX, e2.getY() - centerY); pieChart.setChartRotation(pieChart.getChartRotation() - (int) scrollTheta / FLING_VELOCITY_DOWNSCALE, false); return true; } return false; }
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (isRotationEnabled) { // Set up the Scroller for a fling final RectF circleOval = pieChart.getCircleOval(); final float centerX = circleOval.centerX(); final float centerY = circleOval.centerY(); float scrollTheta = vectorToScalarScroll(velocityX, velocityY, e2.getX() - centerX, e2.getY() - centerY); scroller.abortAnimation(); scroller.fling(0, (int) pieChart.getChartRotation(), 0, (int) scrollTheta / FLING_VELOCITY_DOWNSCALE, 0, 0, Integer.MIN_VALUE, Integer.MAX_VALUE); return true; } return false; }