旋转动画(RotateAnimation)简介

以指定的坐标点为中心,使控件做圆周运动,称之为旋转。android提供了系统级别的类来帮助我们完成旋转动画。

旋转动画的属性

旋转动画有部分属性与平移和缩放动画相同,同时也有一些特有的属性,旋转动画的属性如下:

属性 描述
fromDegrees 开始角度,位置0,相当于缩放动画的fromXScale或fromYScale
toDegrees 结束角度,正数表示顺时针,负数表示逆时针,相当于缩放动画的toXScale或toYScale
detachWallpaper 是否在壁纸上运行
zAdjustment 表示旋转的内容在Z轴的位置,默认normal,top 最顶层,bottom 最底层
repeatMode 同平移或缩放动画
repeatCount 同平移或缩放动画
pivotX 旋转中心点的X轴坐标,可以是浮点数或者百分比
pivotY 旋转中心点Y轴坐标,可以是浮点数或者百分比

旋转动画的实现方式

所有的补间动画都可以通过xml和代码两种方式创建,旋转动画也不例外。 接下来同样通过一个demo来讲解一下这两种方式

旋转动画demo

这个demo要实现的效果是通过两个旋转动画来模拟齿轮关联转动的效果,效果如下:


首先通过xml方式实现,xml方式主要有两步:

1. 创建两个动画文件rotate.xml和rotate2.xml
rotate.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2500"//时长2500msandroid:shareInterpolator="false">//不共享插值器<rotate android:fromDegrees="0"//起始角度android:toDegrees="360"//结束角度,正数代表顺时针旋转android:pivotX="50%"//起始位置x坐标,50%表示控件的横向中心位置android:pivotY="50%"//起始位置y坐标,50%表示控件的纵向中心位置android:repeatCount="infinite"//无限次循环android:interpolator="@android:anim/linear_interpolator"//匀速运动插值器/></set>
rotate2.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2500"android:shareInterpolator="false"><rotate android:fromDegrees="0"android:toDegrees="-360"//负数表示逆时针旋转android:pivotX="50%"android:pivotY="50%"android:repeatCount="infinite"android:interpolator="@android:anim/linear_interpolator"/>
</set>
2. 使用AnimationSet加载两个xml文件并分别执行Animation animation = AnimationUtils.loadAnimation(this,R.anim.rotate);Animation animation2 = AnimationUtils.loadAnimation(this,R.anim.rotate2);AnimationSet set = new AnimationSet(false);set.addAnimation(animation);set.addAnimation(animation2);iv_rotate.startAnimation(set.getAnimations().get(0));iv_rotate2.startAnimation(set.getAnimations().get(1));

通过Java代码的方式实现

Animation animation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);animation.setDuration(2500);animation.setRepeatCount(Animation.INFINITE);//无限循环animation.setInterpolator(new LinearInterpolator());//匀速运动插值器Animation animation1 = new RotateAnimation(0,-360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);animation1.setDuration(2500);animation1.setRepeatCount(Animation.INFINITE);//无限循环animation1.setInterpolator(new LinearInterpolator());//匀速运动插值器
iv_rotate.startAnimation(animation);
iv_rotate2.startAnimation(animation1);

    旋转动画每一次结束之后会有一个小小停顿的现象,这个时候可以将toDegress和duration放大1000倍或者更大,这就相当于把每次的停顿都进行了相同倍数的弱化,从视觉上就感受不到停顿了。

Android补间动画之旋转动画相关推荐

  1. android 动画多次使用,Android动画使用(二)——补间(View)动画

    1.Android动画简介 1.1 分类 Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: Drawable Animation: 这种动画(也叫Fr ...

  2. Android平移补间动画,Android 补间动画之平移动画TranslateAnimation

    Android动画系列 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 duration 时间 f ...

  3. android image 位移动画_「translateanimation」Android 补间动画之平移动画TranslateAnimation - seo实验室...

    translateanimation 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 durati ...

  4. Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法

    补间(Tween)动画 Android 使用Animation代抽象的动画类,它包括如下几个子类. AlphaAnimation:透明度改变的动画.创建该动画时要指定动画开始时的透明度.结束时的透明度 ...

  5. 谷歌气球 simplekml 《八》地图动画之旋转动画的制作-全网唯一

    谷歌气球 simplekml 入门<一> 谷歌气球 simplekml 入门<二> 谷歌气球 simplekml 入门<三> 谷歌气球 simplekml 入门&l ...

  6. c#动画(两点动画,旋转动画,变色动画)及案例

    C#动画: 两点动画,旋转动画,变色动画 1.边框 border:可以容纳一个其他元素 BorderThickness:边框厚度 BorderBrush:边框颜色 CornerRadius:设置边框圆 ...

  7. Threejs开发之移动动画、旋转动画、缩放动画和路径动画

    以下代码 示例了threejs的移动动画.旋转动画.缩放动画和路径动画 注意:引入three.js三维引擎的路径需要根据 自己的情况修改相应的路径,本示例采用引用外部模块的方式. 以下为完整代码: & ...

  8. android—补间动画(Tween Animation)旋转的血轮眼

    Android系统提供了两种实现动画的方式,一种是补间动画(Tween Animation),另一种是帧动画(Frame Animation).补间动画可以实现View组件的移动.放大.缩小以及渐变等 ...

  9. Android 补间动画(Tween Animation)

    Tween Animation(补间动画): Tween动画,通过对View的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可以采用XML来做也可以采用编 ...

  10. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

最新文章

  1. java se 与j2se_关于java:J2EE和J2SE项目之间的区别
  2. sqlserver 安装_安装sqlserver
  3. 什么是序列化?python pickle模块
  4. 背景图片生成网站收集
  5. python整数转字节数组_【转】Python内置函数(7)——bytearray
  6. 吃鱼可以不挑刺了?华中农业大学发现鳊鱼肌间刺表达基因,可培育“无刺鱼”...
  7. 把java程序打包成.exe
  8. Perl用LWP实现GET/POST数据发送 原
  9. Django简单介绍-基础1
  10. Design Patterns
  11. 经典算法题随机从连续的100个不重复数中取出100个不重复随机数
  12. window - 安装 tomcat
  13. Gitea Extension for Visual Studio V1.0.62 发布
  14. 0可用,0已用 U盘问题 重解~
  15. NumberFormat和DecimalFormat
  16. 算法:工作窃取算法(work-stealing)。
  17. 商业分析师的要求与必备技能
  18. 禁止chrome更新呢
  19. grep、sed、awk
  20. 基于图神经网络的知识追踪的五篇论文

热门文章

  1. 20171028_艾孜_Java_第二次
  2. 算法竞赛入门经典-第五章错位输出
  3. C2Prog 串口烧录出现Connecting with target… failed(no response)!
  4. N,N-二甲基十二烷基胺(CAS 112-18-5)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. 关于函数连续性的逐点定义
  6. power app 与 flow 咋实现前后端互动嘞
  7. CityBuilder+DataV制作次世代3D城市大屏,一秒俘获甲方的心!
  8. 两个三进制数相加,输出一个结果为三进制形式的和
  9. 计算机课程给你最大的收获,计算机课程心得体会.doc
  10. ajax data=text,jQuery ajax dataType值为text json探索分享