前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记88 | 仿网易云音乐的圆盘指针动画

笔记88 | 仿网易云音乐的圆盘指针动画

作者头像
项勇
发布2019-04-28 11:21:26
9830
发布2019-04-28 11:21:26
举报
文章被收录于专栏:项勇项勇项勇

之前我们平台音乐的圆盘指针都是写死不动的,我这燥脾气哪受的了这个,最近时间相对充裕一些,就抽个时间整出来了,效果相对之前,还是有提升的。

效果图如下:

代码如下,都备注好了,一看就明白!

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);    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 项勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档