Animation

动画(专题)

实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转、缩放、淡入淡出等。

Tweened Animations

该类Animations提供了旋转、移动、伸展和淡出等效果。Alpha——淡入淡出,Scale——缩放效果,Rotate——旋转,Translate——移动效果。
- AlphaAnimation
- TranslateAnimation
- ScaleAnimation
- RotateAnimation
- AnimationSet

代码

TranslateAnimation translateAnimation =
              new TranslateAnimation(
                  Animation.RELATIVE_TO_SELF,0f,
                  Animation.RELATIVE_TO_SELF,0.5f,
                  Animation.RELATIVE_TO_SELF,0f,
                  Animation.RELATIVE_TO_SELF,0.5f);
           translateAnimation.setDuration(1000);
           image.startAnimation(animationSet);```
#### 使用xml配置
translate.xml

Animation animation = AnimationUtils.loadAnimation(
                  Animation1Activity.this, R.anim.translate);
           image.startAnimation(animation);```

## AnimationSet
一个AnimationSet包含了一系列的Animation</br></br>
#### xml配置

代码方式

AnimationSet animationSet = new AnimationSet(true);
           AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
           RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
                  Animation.RELATIVE_TO_SELF,0.5f,
                  Animation.RELATIVE_TO_SELF,0.5f);
           rotateAnimation.setDuration(1000);
           animationSet.addAnimation(rotateAnimation);
           animationSet.addAnimation(alphaAnimation);
           image.startAnimation(animationSet);```

## Interpolator
Interpolator定义了动画变化的速率,在Animations框架当中定义了一下几种Interpolator
- AccelerateDecelerateInterpolator:在动画开始与结束的地方速率改变比较慢,在中间的时候速率快;
- AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速;
- CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线;
- DecelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始减速;
- LinearInterpolator:动画以均匀的速率改变。

AnimationSet共享

android:shareInterpolator=”true”“`
若不需共享,可设为false,再在每个动画里单独设置。

Frame-by-Frame Animations

这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。
xml方式,在drawable文件夹中新建

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/a_01" android:duration="50"/>
    <item android:drawable="@drawable/a_02" android:duration="50"/>
    <item android:drawable="@drawable/a_03" android:duration="50"/>
    <item android:drawable="@drawable/a_04" android:duration="50"/>
    <item android:drawable="@drawable/a_05" android:duration="50"/>
    <item android:drawable="@drawable/a_06" android:duration="50"/>
</animation-list>```
java代码
```objc
    imageView.setBackgroundResource(R.anim.anim);
    AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
    animationDrawable.start();```




<div class="se-preview-section-delimiter"></div>

## AnimationListener
在动画执行的各个阶段会得到通知,从而调用相应的方法:
- onAnimationEnd(Animation animation) - 当动画结束时调用
- onAnimationRepeat(Animation animation) - 当动画重复时调用
- onAniamtionStart(Animation animation) - 当动画启动时调用





<div class="se-preview-section-delimiter"></div>

## LayoutAnimationsController
LayoutAnimationsController可以用于实现使多个控件按顺序一个一个的显示。
- LayoutAnimationsController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置统一的动画效果。
- 每一个控件都有相同的动画效果。
- 控件的动画效果可以在不同的时间显示出来。
- LayoutAnimationsController可以在xml文件当中设置,以可以在代码当中进行设置。





<div class="se-preview-section-delimiter"></div>

#### xml中使用
创建layoutAnimation为根元素的xml文件
- android:delay - 动画间隔时间;子类动画时间间隔 (延迟)   70% 也可以是一个浮点数 如“1.2”等
- android:animationOrder - 动画执行的循序(normal:顺序,random:随机,reverse:反向显示)
- android:animation – 引用动画效果文件





<div class="se-preview-section-delimiter"></div>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章