当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 视图动画

视图动画 时间:2018-09-28      来源:未知

视图动画即View动画,主要包括四种:TranslateAnimation、ScaleAnimation、RotateAnimation和AlphaAnimation,从命名上也是比较好理解的,分

别为平移动画、缩放动画、旋转动画和透明度动画。严格来讲还有一种帧动画,在本书中也放入此视图动画中一并讲解,但是要注意的是,帧动画的

使用和原理与上面四种视图动画并不一样。

视图动画既可以在代码中动态控制,也可以在xml文件中静态预设,从可行性上来讲,一般采用后者,本书同样采用后者来进行讲解。

关于xml文件中一些固定用法,说明如下。

<set>节点表示动画集,可以在其中加入多个子节点,每个子节点都代表一段动画。<set>节点本身拥有一些属性如下所示:

(1) android:interpolator

动画速率。可选值均来源于@android:anim/,如图.

android:interpolator的可选值

默认值为@android:anim/accelerate_decelerate_interpolator,表示动画执行在开始和结束的时候比较慢,在中间的时候比较快。

(2) android:shareInterpolator

共享动画速率。如果设为true,所有的子动画节点将共享同一个动画速率;如果设为false,每个子节点动画将单独设置其动画速率。

(3) android:fillBefore

如果设为true,则动画结束后停留在动画的起始位置。

(4) android:fillAfter

如果设为true,则动画结束后停留在动画的结束位置。

(5) android:duration

动画的持续时长。

(6) android:startOffset

动画执行前的等待时长。

(7) android:repeatMode

动画的重复模式。默认值为restart,该属性只有当android:repeatCount设置成大于0的数或infinite才起作用;还可以设为reverse,表示偶数次显

示动画时会做与动画文件定义的方向相反的动作。

(8) android:repeatCount

动画的重复次数。可以设置为infinite,表示无穷次。

(9) android:fillEnabled

当其设置为true时,android:fillBefore和android:fillAfter才会生效。

(10) android:zAdjustment

动画播放时,Z轴上的位置,一共有三个值:

○1 normal

保持当前的Z轴位置不变。

○2 top

动画播放时,始终在Z轴上层。

○3 bottom

动画播放时,始终在Z轴底层。

(11) android:detachWallpaper

是否在壁纸上运行,默认值是false。如果为true,并且动画窗体有一个壁纸的话,那么动画只会应用给window,壁纸是静态不动的。 

1  TranslateAnimation

TranslateAnimation表示平移动画,对应的节点为<translate>,拥有以下属性:

(1) android:fromXDelta

表示x轴的起始位置。

(2) android:toXDelta

表示x轴的终止位置。

(3) android:fromYDelta

表示y轴的起始位置。

(4) android:toYDelta

表示y轴的终止位置。

下面通过实际代码来演示TranslateAnimation的使用,首先是xml文件,位于res/anim/main_animation.xml。

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="//schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_decelerate_interpolator"

    android:shareInterpolator="true" >

    <translate

        android:duration="3000"

        android:fromXDelta="0"

        android:fromYDelta="0"

        android:toXDelta="200"

        android:toYDelta="200" />

</set>

程序中使用此动画,如下:

Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.main_animation);

//给mText控件执行动画

mText.startAnimation(animation);

2  ScaleAnimation

ScaleAnimation表示缩放动画,对应的节点为<scale>,拥有以下属性:

(1) android:fromXScale

表示x轴的起始缩放值。

(2) android:toXScale

表示x轴的终止缩放值。

(3) android:fromYScale

表示y轴的起始缩放值。

(4) android:toYScale

表示y轴的终止缩放值。

(5) android:pivotX

表示缩放的中轴点X坐标,距离自身左边缘的位置。

(6) android:pivotY

表示缩放的中轴点X坐标,距离自身上边缘的位置。

下面通过实际代码来演示ScaleAnimation的使用,首先是xml文件,位于res/anim/main_animation.xml。

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="//schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_decelerate_interpolator"

    android:shareInterpolator="true" >

    <scale

        android:duration="10000"

        android:fromXScale="0.0"

        android:fromYScale="0.0"

        android:pivotX="50%"

        android:pivotY="50%"

        android:toXScale="1.5"

        android:toYScale="1.5" />

</set>

3  RotateAnimation

RotateAnimation表示旋转动画,对应的节点为<rotate>,拥有以下属性:

(1) android:fromDegrees

表示旋转的起始角度值。

(2) android:toDegrees

表示旋转的终止角度值。

(3) android:pivotX

表示旋转的中轴点X坐标,距离自身左边缘的位置。

(4) android:pivotY

表示旋转的中轴点X坐标,距离自身上边缘的位置。

下面通过实际代码来演示RotateAnimation的使用,首先是xml文件,位于res/anim/main_animation.xml。

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="//schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_decelerate_interpolator"

    android:shareInterpolator="true" >

    <rotate

        android:duration="5000"

        android:fromDegrees="10"

        android:pivotX="40%"

        android:pivotY="60%"

        android:toDegrees="180" />

</set>

4  AlphaAnimation

AlphaAnimation表示透明度动画,对应的节点为<alpha>,拥有以下属性:

(1) android:fromAlpha

表示透明度的起始值。

(2) android:toAlpha

表示透明度的终止值。

下面通过实际代码来演示RotateAnimation的使用,首先是xml文件,位于res/anim/main_animation.xml。

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="//schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_decelerate_interpolator"

    android:shareInterpolator="true" >

    <alpha

        android:duration="7000"

        android:fromAlpha="0.1"

        android:toAlpha="1.0" />

</set>

5  帧动画

帧动画就是按照每个图片资源作为动画的一帧,逐张播放。其对应的节点为<animation-list>,其子节点<item>作为动画的一帧,多个<item>子节点

一起组成了帧动画。值得注意的一点是,避免使用过大的图片资源,因为帧动画本身就是加载多张图片资源构成的动画,如果整套资源过大,非常容

易引发内存溢出的现象。

节点有以下属性:

(1) android:drawable

表示引用的图片资源。

(2) android:duration

表示此节点对应的动画的持续时间。

(3) android:oneshot

表示动画是否只显示一次。如果为true,则对应动画只显示一次;如果为false,则动画重复显示。

(4) android:visible

表示初始图片资源是否可见。如果为true,则初始可见;如果为false,则不可见。

下面通过实际代码来演示帧动画的使用,首先是xml文件,位于res/drawable/main_animation。

<?xml version="1.0" encoding="utf-8"?>

<animation-list xmlns:android="//schemas.android.com/apk/res/android"

    android:oneshot="false" >

    <item

        android:drawable="@drawable/img0"

        android:duration="50"/>

    <item

        android:drawable="@drawable/img1"

        android:duration="50"/>

    <item

        android:drawable="@drawable/img2"

        android:duration="50"/>

</animation-list>

程序中使用此动画,如下:

mText.setBackgroundResource(R.drawable.main_animation);

AnimationDrawable animationDrawable = (AnimationDrawable)mText.getBackground();

animationDrawable.start();

上一篇:3.4.2内核下的I2C驱动

下一篇:负数的源反补码

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部