效果如图:
中心思想很简单,就是利用canvas的多图层,根据每个指针所在的位置将图层旋转相应角度的,最终把所有的图层绘制到canvas上即可
核心代码:
1.动画开始时计算每个指针所在位置:
@Override
public void onAnimationStart(Animator animator) {
mSecondStartAngle = Math.round((mCalendar.get(Calendar.SECOND) + mCalendar.get(Calendar.MILLISECOND) / Constants.SECOND) * (360 / 60));
mHourAngle = (mCalendar.get(Calendar.HOUR) + ((float)mCalendar.get(Calendar.MINUTE)) / 60) * (360 / 12);
mMinuteAngle = (mCalendar.get(Calendar.MINUTE) + ((float)mCalendar.get(Calendar.SECOND)) / 60) * (360 / 60);
}