public RotateAnimation setPivot(int pivot) { this.pivot = pivot; float pivotX, pivotY, viewWidth = targetView.getWidth(), viewHeight = targetView.getHeight(); switch (pivot) { case PIVOT_TOP_LEFT: pivotX = 1f; pivotY = 1f; break; case PIVOT_TOP_RIGHT: pivotX = viewWidth; pivotY = 1f; break; case PIVOT_BOTTOM_LEFT: pivotX = 1f; pivotY = viewHeight; break; case PIVOT_BOTTOM_RIGHT: pivotX = viewWidth; pivotY = viewHeight; break; default: pivotX = viewWidth / 2; pivotY = viewHeight / 2; break; } ViewHelper.setPivotX(targetView, pivotX); ViewHelper.setPivotY(targetView, pivotY); return this; }
@Override public AnimatorSet createAnimatorSet() { ViewHelper.setClipChildren(targetView, false); AnimatorSet rotationSet = new AnimatorSet(); rotationSet.play( ObjectAnimator.ofFloat(targetView, View.ROTATION, targetView.getRotation() + degrees)); rotationSet.setInterpolator(interpolator); rotationSet.setDuration(duration); if (listener != null) { rotationSet.addListener(listener); } return rotationSet; }