之前我们平台音乐的圆盘指针都是写死不动的,我这燥脾气哪受的了这个,最近时间相对充裕一些,就抽个时间整出来了,效果相对之前,还是有提升的。
效果图如下:
代码如下,都备注好了,一看就明白!
代码语言:javascript
复制
Animation rotateAnimation = null ; int isAnimationState = -1; int time1,time2 = 0; private int animAngle = 25; //角度 private int animTime = 1000; //动画时间 private void showrotateAmin(int i){ time1 = animAngle; time2 = animTime; /** * 判断是否为连续点击 * 根据1秒内两次点击判断 */ if ((System.currentTimeMillis() - exitTime) > 1000) { exitTime = System.currentTimeMillis(); } else { if ((System.currentTimeMillis() - exitTime) > 0){ time2 = (int) (System.currentTimeMillis() - exitTime); //记录上次点击所引起的动画运行时间 time1 = Math.round((float) (time2*0.001)*animAngle);//根据运行时间来计算已走的角度 } } switch (i) { case 0://初始启动状态 (停止的情况 if (isAnimationState == 0) { return; } rotateAnimation = new RotateAnimation( 0,// 1. fromDegrees :动画开始时 视图的旋转角度(正数 = 顺时针,负数 = 逆时针) animAngle,// 2. toDegrees :动画结束时 视图的旋转角度(正数 = 顺时针,负数 = 逆时针) Animation.ABSOLUTE,// 3. pivotXType:旋转轴点的x坐标的模式 9,// 4. pivotXValue:旋转轴点x坐标的相对值 Animation.ABSOLUTE,// 5. pivotYType:旋转轴点的y坐标的模式 10 // 6. pivotYValue:旋转轴点y坐标的相对值 ); // pivotXType = Animation.ABSOLUTE:旋转轴点的x坐标 = View左上角的原点 在x方向 加上 pivotXValue数值的点(y方向同理) // pivotXType = Animation.RELATIVE_TO_SELF:旋转轴点的x坐标 = View左上角的原点 在x方向 加上 自身宽度乘上pivotXValue数值的值(y方向同理) // pivotXType = Animation.RELATIVE_TO_PARENT:旋转轴点的x坐标 = View左上角的原点 在x方向 加上 父控件宽度乘上pivotXValue数值的值 (y方向同理) rotateAnimation.setDuration(0); isAnimationState = 0; break; case 1://pause 暂停动画 if (isAnimationState == 1 || isAnimationState == 0) { //防止连续运行同一个动画 return; } rotateAnimation = new RotateAnimation(animAngle-time1,animAngle,Animation.ABSOLUTE,9,Animation.ABSOLUTE,10); //会根据上次动画停留的角度开始运行 rotateAnimation.setDuration(time2); isAnimationState = 1; break; case 2: //play 播放动画 if (isAnimationState == 2 || isAnimationState == 3) { return; } rotateAnimation = new RotateAnimation((time1),0,Animation.ABSOLUTE,9,Animation.ABSOLUTE,10); rotateAnimation.setDuration(time2); isAnimationState = 2; break; case 3:////初始启动状态 (运行的情况 if (isAnimationState == 3) { return; } rotateAnimation = new RotateAnimation(animAngle,0,Animation.ABSOLUTE,9,Animation.ABSOLUTE,10); rotateAnimation.setDuration(0); isAnimationState = 3; break; } rotateAnimation.setFillAfter(true); findViewById(R.id.album_hand).startAnimation(rotateAnimation); }