Android Animation学习总结

在Android中定义了2类animation

   1.Tween Animation(补间动画)

       通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画

   2.Frame  Animation(帧动画)

       顺序播放事先做好的图像,是一种画面转换动画,好比放电影。

 

以下具体介绍这两类动画

Tween Animation

 在XML中定义具体的动画 位置为:res/anim/fileName.xml(具体文件名)。

 实际的文件名将被当做resource ID 在java代码 或者其他XML中被引用。

 在XML中基本语法:

  ...

 

这个文件必须包含一个根元素,可以是 插值元素或者是把上面的元素都放入元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset。

 

一个容器 可以包含 (, , , ) or other 元素。 在set中设置的属性 (for example, duration or fillBefore), 将覆盖它所包含的类型的设置的同一属性。

属性:

    android:interpolator

    interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。

  android 自带的interpolator

 

   AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速

     AccelerateInterpolator  在动画开始的地方速率改变比较慢,然后开始加速

   AnticipateInterpolator 开始的时候向后然后向前甩

   AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值

   BounceInterpolator   动画结束的时候弹起

   CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线

   DecelerateInterpolator 在动画开始的地方快然后慢

     LinearInterpolator   以常量速率改变

     OvershootInterpolator    向前甩一定值后再回到原来位置

如果android定义的interpolators不符合你的效果也可以自定义interpolators

例子:

XML file saved at res/anim/my_overshoot_interpolator.xml:


    android:tension="7.0"
    />

 

android:shareInterpolator Boolean. "true" if you want to share the same interpolator among all child elements

 

淡入淡出动画效果

 例子:

 

              android:toAlpha="0"       //Float表示 结束透明度 0.0 透明 1.0 不透明
              android:duration="@android:integer/config_mediumAnimTime"//动画持续时间

  /> 

 

  渐变尺寸伸缩动画效果

例子:

           android:fromYScale="1.0" android:toYScale=".5" //动画开始和结束时y坐标上的伸缩尺寸 0.0 表示不伸缩 1.1 表示正常无变化

           android:pivotX="50%p" android:pivotY="50%p" //动画相对于物件的x,y坐标开始位置 取值0%-100%. 50%
           android:duration="@android:integer/config_mediumAnimTime" />

  水平和/或垂直运动 三种表示格式: 1.-100% 到 100% 相对自身的百分比 2.-100%P到100%P 相对父组件的百分比 3.folat value 没有后缀 表示绝对值

例子:

  

 

旋转动画                      android:fromDegrees="0" //动画起始角度 负数表示逆时针 正式表示顺时针
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />

 在应用程序中应用动画

Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); findViewById(R.id.pw).startAnimation(shake);

Frame Animation

语法:

 必须的 作为根元素 包含 一个或多个

属性:

android:oneshot  "true" if you want to perform the animation once; "false" to loop the animation  

 单独的帧动画

属性:

android:drawable

Drawable resource. The drawable to use for this frame.

android:duration

Integer. The duration to show this frame, in milliseconds.

 在应用程序中应用

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); rocketAnimation.start();

  

你可能感兴趣的:(Android Animation学习总结)