Android补间动画之旋转动画
旋转动画(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补间动画之旋转动画相关推荐
- android 动画多次使用,Android动画使用(二)——补间(View)动画
1.Android动画简介 1.1 分类 Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: Drawable Animation: 这种动画(也叫Fr ...
- Android平移补间动画,Android 补间动画之平移动画TranslateAnimation
Android动画系列 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 duration 时间 f ...
- android image 位移动画_「translateanimation」Android 补间动画之平移动画TranslateAnimation - seo实验室...
translateanimation 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 durati ...
- Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法
补间(Tween)动画 Android 使用Animation代抽象的动画类,它包括如下几个子类. AlphaAnimation:透明度改变的动画.创建该动画时要指定动画开始时的透明度.结束时的透明度 ...
- 谷歌气球 simplekml 《八》地图动画之旋转动画的制作-全网唯一
谷歌气球 simplekml 入门<一> 谷歌气球 simplekml 入门<二> 谷歌气球 simplekml 入门<三> 谷歌气球 simplekml 入门&l ...
- c#动画(两点动画,旋转动画,变色动画)及案例
C#动画: 两点动画,旋转动画,变色动画 1.边框 border:可以容纳一个其他元素 BorderThickness:边框厚度 BorderBrush:边框颜色 CornerRadius:设置边框圆 ...
- Threejs开发之移动动画、旋转动画、缩放动画和路径动画
以下代码 示例了threejs的移动动画.旋转动画.缩放动画和路径动画 注意:引入three.js三维引擎的路径需要根据 自己的情况修改相应的路径,本示例采用引用外部模块的方式. 以下为完整代码: & ...
- android—补间动画(Tween Animation)旋转的血轮眼
Android系统提供了两种实现动画的方式,一种是补间动画(Tween Animation),另一种是帧动画(Frame Animation).补间动画可以实现View组件的移动.放大.缩小以及渐变等 ...
- Android 补间动画(Tween Animation)
Tween Animation(补间动画): Tween动画,通过对View的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可以采用XML来做也可以采用编 ...
- 每日一道面试题(第7期)---Android补间动画与属性动画的区别
零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...
最新文章
- java se 与j2se_关于java:J2EE和J2SE项目之间的区别
- sqlserver 安装_安装sqlserver
- 什么是序列化?python pickle模块
- 背景图片生成网站收集
- python整数转字节数组_【转】Python内置函数(7)——bytearray
- 吃鱼可以不挑刺了?华中农业大学发现鳊鱼肌间刺表达基因,可培育“无刺鱼”...
- 把java程序打包成.exe
- Perl用LWP实现GET/POST数据发送 原
- Django简单介绍-基础1
- Design Patterns
- 经典算法题随机从连续的100个不重复数中取出100个不重复随机数
- window - 安装 tomcat
- Gitea Extension for Visual Studio V1.0.62 发布
- 0可用,0已用 U盘问题 重解~
- NumberFormat和DecimalFormat
- 算法:工作窃取算法(work-stealing)。
- 商业分析师的要求与必备技能
- 禁止chrome更新呢
- grep、sed、awk
- 基于图神经网络的知识追踪的五篇论文
热门文章
- 20171028_艾孜_Java_第二次
- 算法竞赛入门经典-第五章错位输出
- C2Prog 串口烧录出现Connecting with target… failed(no response)!
- N,N-二甲基十二烷基胺(CAS 112-18-5)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 关于函数连续性的逐点定义
- power app 与 flow 咋实现前后端互动嘞
- CityBuilder+DataV制作次世代3D城市大屏,一秒俘获甲方的心!
- 两个三进制数相加,输出一个结果为三进制形式的和
- 计算机课程给你最大的收获,计算机课程心得体会.doc
- ajax data=text,jQuery ajax dataType值为text json探索分享