android学习日记22--Animation动画简介
Animation动画主要有两种:帧动画(Frame Animation)和补间动画(Tween Animation)。
补间动画主要包括对位置、角度、尺寸等属性的变化,而帧动画则是通过若干帧图片轮流切换显示的。
1、帧动画
按顺序显示事先准备好的图片,跟动漫类似。主要用到的类AnimationDrawable,每个帧都是AnimationDrawable对象。
定义帧动画可以在代码直接进行。也可以通过XML文件定义,定义帧动画的文件存放在res/anim目录下。XML指定帧出现的顺序
及每个帧的持续时间。
帧动画XML主要标记和属性如下:
需要强调的是:启动Frame Animation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中
AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。这里实在拖曳事件中实现的。
AnimationDrawable的主要方法如下:
帧动画使用例子
完整帧动画XML(frame_ani.xml)代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" 3 android:oneshot="false"> 4 <item android:drawable="@drawable/fish1" android:duration="200" android:visible="true"/> 5 <item android:drawable="@drawable/fish1" android:duration="200" android:visible="true"/> 6 <item android:drawable="@drawable/fish2" android:duration="200" android:visible="true"/> 7 <item android:drawable="@drawable/fish3" android:duration="200" android:visible="true"/> 8 <item android:drawable="@drawable/fish4" android:duration="200" android:visible="true"/> 9 <item android:drawable="@drawable/fish5" android:duration="200" android:visible="true"/> 10 <item android:drawable="@drawable/fish6" android:duration="200" android:visible="true"/> 11 <item android:drawable="@drawable/fish7" android:duration="200" android:visible="true"/> 12 <item android:drawable="@drawable/fish8" android:duration="200" android:visible="true"/> 13 <item android:drawable="@drawable/fish8" android:duration="200" android:visible="true"/> 14 </animation-list>
启动帧动画JAVA代码:
1 @Override 2 public void onClick(View v) { //重写onClick方法 3 ImageView iv = (ImageView)findViewById(R.id.iv); 4 iv.setBackgroundResource(R.anim.frame_ani); 5 AnimationDrawable ad = (AnimationDrawable)iv.getBackground(); 6 ad.start(); //启动AnimationDrawable 7 }
点击按钮,启动帧动画,可以看见不同fish图片的切换,鱼儿在游动(自己脑补哈)。
2、补间动画
补间动画作用于View视图,主要包括对View对象的位置、尺寸、旋转角度、透明度的变化。补间动画涉及的类主要有
Animation、AnimationSet等。
补间动画同帧动画可以在代码直接进行。也可以通过XML文件定义,推荐用XML,因为这样可读性比较高和利于扩展。
XML文件存放在res/anim下。
补间动画XML几种变化标记和属性如下:
公有属性如下:
补间动画使用例子:
完整补间动画XML代码:
1 <?xml version="1.0" encoding="utf-8"?><!-- XML的版本以及编码方式 --> 2 <set xmlns:android="http://schemas.android.com/apk/res/android"> 3 <alpha 4 android:fromAlpha="0.0" 5 android:toAlpha="1.0" 6 android:duration="6000" 7 /> <!-- 透明度的变换 --> 8 <scale 9 android:interpolator= "@android:anim/accelerate_decelerate_interpolator" 10 android:fromXScale="0.0" 11 android:toXScale="1.0" 12 android:fromYScale="0.0" 13 android:toYScale="1.0" 14 android:pivotX="50%" 15 android:pivotY="50%" 16 android:fillAfter="false" 17 android:duration="9000" 18 /> <!-- 尺寸的变换 --> 19 <translate 20 android:fromXDelta="30" 21 android:toXDelta="0" 22 android:fromYDelta="30" 23 android:toYDelta="0" 24 android:duration="10000" 25 /> <!-- 尺位置的变换 --> 26 <rotate 27 android:interpolator="@android:anim/accelerate_decelerate_interpolator" 28 android:fromDegrees="0" 29 android:toDegrees="+360" 30 android:pivotX="50%" 31 android:pivotY="50%" 32 android:duration="10000" 33 /> <!-- 旋转变换 --> 34 </set>
启动补间动画JAVA代码:
1 @Override 2 public void onClick(View v) { //重写onClick方法 3 ImageView iv = (ImageView)findViewById(R.id.iv); 4 Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.tween_ani); 5 iv.startAnimation(animation); //启动动画 6 }
点击按钮,启动补间动画,可以看见螃蟹从中心慢慢旋转显现出来。