欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android之Tween Animation

程序员文章站 2024-03-24 10:59:10
...

android Tween Animation有四种,AlphaAnimation(透明度动画)、ScaleAnimation(尺寸伸缩动画)、TranslateAnimation(位移动画)、RotateAnimation(旋转动画)。

 

1、先来展示这四种动画通用的属性:

android:duration="2000"  //动画播放时长(毫秒)
android:fillBefore="true"  //动画播放完毕后是否显示第一帧
android:fillAfter="false"   //动画播放完毕后是否显示最后一帧
android:repeatCount="infinite"  //动画重复次数。infinite或负数时无限循环
android:repeatMode="reverse"  //restart为正向重复,reverse为反向重复
android:startOffset="2000"  //延迟播放时间(毫秒)
android:interpolator="@android:anim/accelerate_decelerate_interpolator"  //插补器,控制播放速率变化

 

在java代码中开启动画

ImageView animIv= (ImageView) findViewById(R.id.id_anim_iv);   
Animation animation =AnimationUtils.loadAnimation(this, R.anim.set);  //加载动画
animIv.startAnimation(animation);  //开启动画

  

2、Alpha

android:fromAlpha="0.1"  //初始透明度
 android:toAlpha="1.0"   //结束透明度

  

0为完全透明,1为不透明。

 

3、Scale

android:fromXScale="0.0"  //横向初始比例
android:fromYScale="1.0"  //纵向初始比例
android:pivotX="50%"  //横向缩放中心点
android:pivotY="50%"  //纵向缩放中心点
android:toXScale="1.0"  //横向结束比例
android:toYScale="1.0"   //纵向结束比例

  

0为不显示,1为正常比例。

 

4、Translate

android:fromXDelta="10"  //初始X坐标
android:fromYDelta="10"  //初始Y坐标
android:toXDelta="100"  // 结束X坐标
android:toYDelta="100"   //结束Y坐标

  

坐标为相对坐标,单位为px。

 

5、Rotate

android:fromDegrees="0"  //初始角度
android:toDegrees="+359"  //结束角度
android:pivotX="50%"  //横向旋转中心
android:pivotY="50%"  //纵向旋转中心

  

重复旋转时匀速转动,设置线性插补器

animation.setInterpolator(new LinearInterpolator());

 

6、动画监听

animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}

@Override
public void onAnimationEnd(Animation animation) {
}

@Override
public void onAnimationRepeat(Animation animation) {
}
});

 

7、我们经常在一些App上看到一些Activity之间跳转的动画效果,其实我们可以用Tween动画来实现。

Intent intent=new Intent(MainActivity.this,SecActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.in, R.anim.out);

在overridePendingTransition(R.anim.in, R.anim.out);中,两个参数分别为SecActivity显示动画和MainActivity消失动画。

下面两个动画实现向右平移的效果:

in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="1000"
        android:fromXDelta="-100%"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0" />
</set>

  

out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:zAdjustment="bottom">
    <translate
        android:duration="2000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100%"
        android:toYDelta="0" />
</set>

其中,out.xml中的zAdjustment属性为z方向的层级,有top、nomal、bottom三个属性,若设置成top,当画面重叠时,处于上层,遮挡其它界面;而bottom则相反,将会被遮挡。

 

 

PS:Tween Animation中,组件的真实位置和显示位置不一定相同,因此点击显示位置未必会触发事件。需要根据需求设置初始和结束的相关属性,如果无法满足需求,可考虑使用属性动画。