悠悠途恩
目前Android中其实有两种动画,分别是Tween Animation和Frame Animation还有Property Animation
前者是对同一个图像做不同的操作已达到各种动画效果
而后者则是按照设定的顺序在一定时间内播放不同的图片造成的一种动画效果
在这里有一点要注意一下
在Tween Animation中,图像没有真正的改变,例如平移,其实图像是没有动的,你看到的仅仅只是程序的操作
例如本文所讲的的便是调整一个图像的透明度使其有一个简单的渐变动画效果
其中在XML中可以定义4动画效果,如下:
alpha渐变透明度动画效果
scale渐变尺寸伸缩动画效果
translate画面转换位置移动动画效果
rotate画面转移旋转动画效果
当然这些也是可以在代码中定义的,不过不推荐,不如在xml中定义使用方便
这次我们说先说第一个,就是alpha
我们要在anim1中写入的内容是
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="https://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"
/>
</set>
android:fromAlpha="0.0" 这个是初始的透明度,0.0的意思就是说完全透明
android:toAlpha="1.0"这个则是动画结束时的透明度,1.0意思就是说完全不透明
android:duration="2000" 这是持续时间,单位是毫秒,这里就是2秒的意思
这样就定义完毕了一个在2秒内逐渐显现出来的图像动画效果
然后介绍一下如何来调用它
首先要在main.xml中定义一个ImageView,起个名字
<ImageView
android:id="@+id/ready1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_x="0dp"
android:layout_y="0dp"
android:src="@drawable/br0" />
然后在程序中定义一下,之后就开始调用动画了
Animation ani1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anim1);
ImageView img1;
img1 = (ImageView)findViewById(R.id.ready1);
img1.startAnimation(ani1);
现在,我想要一个淡入淡出的效果,就是让图案的透明度有0到1,等个3秒,然后在有1到0,慢慢显示出来再慢慢消失
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="https://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"
/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="5000"
android:duration="2000"
/>
</set>
这里有了2个alpha和一个新的属性startOffset
主要说一下startOffset,他的意思是,等待一定时间后,再开始执行动画
例如startOffset="5000"的意思就是等待5秒后再执行这个动画
要点来了,注意注意,这个5秒不是由上一个动画结束后开始计时,而是由调用该文件时就开始计时
上一个动画花了2秒,所以这个动画是在上一个动画结束3秒后开始
所以如果他等于2秒的话就是两个动画接连执行,等于0的话就是同时执行