android 中 动画效果自带的主要是四种,透明度改变动画,平移动画,放缩动画,旋转动画。当然我们一般需要的动画效果都是 把这几个动画的某几个一起使用以达到我们所需的效果。
- Animation animation = new AlphaAnimation(0,1); //AlphaAnimation 控制渐变透明的动画效果 渐变从0到1
- Animation animation =new ScaleAnimation(5,0,2,0); //ScaleAnimation 控制尺寸伸缩的动画效果 X从5到0,Y从2到0
- Animation animation = new RotateAnimation(40,10); //RotateAnimation 控制画面角度变化的动画效果 从40度到10度
- Animation animation = new TranslateAnimation(1, 20, 10, 50); //ScaleAnimation 控制尺寸伸缩的动画效果 X从1到20 Y从10到50
以上的四种调用方式是比较常用的,当然这四个类还有别的参数创建方式。具体如下:
以上的构造方法中的一些参数的意义如下:
fromDegrees 开始时的角度
toDegrees 结束时的角度
pivotXValue 动画相对于物件的X坐标的开始位置
pivotYValue 动画相对于物件的Y坐标的开始位置
pivotXType 动画在X轴相对于物件位置类型
pivotYType 动画在Y轴相对于物件位置类型
fromX 动画起始时 X坐标上的伸缩尺寸
toX 动画结束时 X坐标上的伸缩尺寸
相对于物件位置的类型
有三种默认值:
RELATIVE_TO_PARENT 相对于父控件
RELATIVE_TO_SELF 相对于符自己
RELATIVE_TO_ABSOLUTE 绝对坐标
在使用使用者四种基本的动画的时候,我们要注意的是将要进行的动画的view是在第四象限。不过是x轴向右递增,Y轴向下递增。如图:
动画组合的方式
####动画的组合方式一 利用 AnimationSet
利用这个动画集合这个类来把几个动画效果放在一个集合中,然后把这个动画集赋值给某个组件(动画集里的动画同时进行),
如:
AnimationSet set = new AnimationSet(false);
Animation animation1 = new AlphaAnimation(0,1);
animation1.setDuration(500); //动画时间毫秒数
set.addAnimation(animation1); //加入动画集合
animation2 = new RotateAnimation(30,10);
animation2.setDuration(300); //动画时间毫秒数
set.addAnimation(animation2); //加入动画集合
view.startAnimation(set);
动画的组合方式 二 利用自定义文件 anim
创建 动画 welcome_fade_out.xml (文件里的动画同时进行)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale //伸缩动画
android:fillAfter="false"
android:fromXScale="1.1"
android:fromYScale="1.1"
android:interpolator="@android:anim/decelerate_interpolator"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:toXScale="1.1"
android:toYScale="1.1" />
<alpha //透明度动画
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
在代码中调用动画,上面的动画是由 透明度动画和 伸缩动画组合的
private Animation mFadeOut;
mFadeOut = AnimationUtils.loadAnimation(this,R.anim.welcome_fade_out);
mFadeOut.setDuration(1000);
view.startAnimation(mFadeOut);
动画的组合方式 三 利用各个动画监听
每个动画其实都是可以监听的,可以监听在动画结束的时候,启动另一个动画。(动画可以有顺序的执行)
mFadeOut.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
view.startAnimation(mFadeIn);
}
});
具体使用可以参照 手把手教你使用