Android动画
- View Animation 视图动画(Tween Animation 补间动画),只能用来设置View的动画
- Drawable Animation 帧动画(Frame动画),一帧帧地显示资源文件中的Drawable
- Property Animation 属性动画,在android3.0以上的系统才有。这动画可以设置给任何的Object,包括那些还没有渲染到屏幕的view.
为什么要引入属性动画?
- 补间动画只能够作用在View上的
- 补间动画只能够实现移动、缩放、旋转和淡入淡出这四种动画操作,不能改变View的背景等
- 补间动画只是改变了View的显示效果而已,而不会真正去改变View的属性
View Animation 补间动画
视图动画也叫补间动画,指在一个视图容器中执行一些变换。包含有:位置、大小、旋转、透明 补间动画。
一般通过xml实现,不建议是用android代码实现,因为代码实现的可读性比较差。
补间动画的相关类
- AlphaAnimation <alpha>放在res/anim/目录下 透明渐变动画效果
- RotateAnimation <rotate>放在res/anim/目录下 旋转转移动画效果
- ScaleAnimation <scale>放在res/anim/目录下 缩放动画效果
- TranslateAnimation <translate>放在res/anim/目录下 移动动画效果
- AnimationSet <set> 放在res/anim/目录下 持有动画的容器
补间动画之RotateAnimation使用
RotateAnimation动画的实现可以分类两种,一种是使用Java代码实现,另外一种使用xml。
使用java代码实现
RotateAnimation初始化代码片段
/** * init animation 1 */ private void initAnimation1() { /** * 0 - 359度旋转 * 相对于自身中心位置 */ RotateAnimation mRotateAnimation = new RotateAnimation(0, 359, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //设置线性插值,可以解决旋转一圈后卡顿问题 mRotateAnimation.setInterpolator(new LinearInterpolator()); //设置旋转一圈时间 mRotateAnimation.setDuration(1000); //设置重复旋转次数, Animation.INFINITE表示无限次 mRotateAnimation.setRepeatCount(Animation.INFINITE); //设置旋转模式[restart 重新旋转; reverse 旋转一圈后反转] mRotateAnimation.setRepeatMode(Animation.RESTART); return; }
动画的启动和停止
//启动动画 imageView.startAnimation(mRotateAnimation); // 停止动画 imageView.clearAnimation();
使用xml实现
res/anim/anim_rotate.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:duration="1500" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:repeatCount="-1" android:repeatMode="reverse" android:toDegrees="359" /> <!-- duration : 一圈旋转时间 fromDegrees : 开始角度 toDegrees : 结束角度 pivotX : 旋转中心距离view的左顶点为50%距离 pivotY : 旋转中心距离view的左顶点为50%距离 repeatCount="-1":重复次数,-1为一直重复 repeatMode="restart":重复模式,restart从头开始重复 reverse 旋转完后反转旋转 --> </set>
/** * init animaton 2 */ private void initAnimation2() { //加载xml中的动画 Animation mAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_rotate); //设置线性插值 mAnimation.setInterpolator(new LinearInterpolator()); return; }
参考文章
历史上的今天
暂无评论...
随机推荐
郑振铎:月夜之话
是在山中的第三夜了。月色是皎洁无比,看着她渐渐地由东方升了起来。蝉声唧——唧——唧——地曼长地叫着,岭下涧水潺潺的流声,隐略地可以听见,此外,便什么声音都没有了。月如银的圆盘般大,静定地挂在晚天中,星没有几颗,疏朗朗的间缀于蓝天中,如美人身上披着蓝天鹅绒的晚衣,缀了几颗不规则的宝石。大家都把自己的...
Kotlin中的特殊函数简介
前言简单记录一下Kotlin中的run()、apply()、let()、also()和with()等特殊的函数,方便自己查阅。正文run()@kotlin.internal.InlineOnlypublic inline fun <T, R> T.run(block: T....
系统应用MediaButton的使用方式
前言这个是Android高版本注册监听MediaButton的使用,没有测试,至于测试普通应用,会重新整理一篇文章。不想误人子弟,文章大部分设置为私人查阅,抱歉正文隐藏内容!付费阅读后才能查看!¥2 ¥3多个隐藏块只需支付一次付费阅读参考文章这个是从同事那拷贝的,没有测试。
苏童:我从来不敢夸耀童年的幸福
我从来不敢夸耀童年的幸福,事实上我的童年有点孤独,有点心事重重。我父母除了拥有四个孩子之外基本上一无所有。父亲在市里的一个机关上班,每天骑着一辆破旧的自行车来去匆匆;母亲在附近的水泥厂当工人,她年轻时曾经美丽的脸到了中年以后经常是浮肿着的,因为疲累过度,也因为身患多种疾病。多少年来,父母亲靠80多元...
王蒙:永远的巴金
在这个星空之夜,巴金走了。如果设想一下近百年来最受欢迎和影响最大的一部长篇小说,我想应该是巴金的《家》。早在小时候,我的母亲与姨母就在议论鸣凤和觉慧,梅表姐和琴,觉新觉民高老太爷和老不死的冯乐山,且议且叹,如数家珍。而等到我自己迷于阅读的时候,我宁愿读《灭亡》和《新生》,因为这两本书里写了革命,...
Android系统SystemProperties属性的简介
前言在Android项目中,需要各个APP相互交互有时候需要共享数据和状态,因此经常会使用ContentProvider、AIDL和SystemProperties等等。在上面几个中SystemProperties是最简单的一种方式。但是这个只能在系统应用中调用,因为SystemProper...