A012-Anim资源

时间:2022-06-02
本文章向大家介绍A012-Anim资源,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

anim资源这里特指Android中的View Animation(视图动画),然而视图动画分为:

  • Tween Animation(补间动画)
  • Frame Animation(逐帧动画)

Tween Animation

文件路径:res/anim/filename.xml 这样的一个资源指向一个Animation对象 资源引用:

  • Java中引用:R.anim.filename
  • XML中引用:@anim/filename

语法

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >
    <alpha
        android:fromAlpha="float"
        android:toAlpha="float" />
    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float" />
    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float" />
    <set>
        ...    </set></set

<set> <alpha> <scale> <translate> <rotate> 这些标签都可以作为根标签,代表一种动画,其中<set> 可以包含以上所有标签,我们可以通过 <set> 和其他标签组合设计多种多样的动画效果。 下面逐个解析标签的作用:

<set>

代表一个AnimationSet 属性:

  • android:interpolator (插值器)
  • android:shareInterpolator(是否在所有的元素中分享插值器)

<alpha>

代表一个AlphaAnimation,淡入淡出动画 属性:

  • android:fromAlpha(开始透明度,0.0-完全透明 1.0-不完全透明)
  • android:toAlpha(结束透明度,0.0-完全透明 1.0-不完全透明)

<scale>

代表一个ScaleAnimation,缩放动画 属性:

  • android:fromXScale(开始时X方向上相对自身的缩放比例,1.0表示没有变化)
  • android:toXScale(结束时X方向上相对自身的缩放比例)
  • android:fromYScale(开始时Y方向上相对自身的缩放比例)
  • android:toYScale(结束时Y方向上相对自身的缩放比例)
  • android:pivotX(缩放X轴位置,50表示绝对位置,50%表示相对自身,50%p表示相对父控件)
  • android:pivotY(缩放Y轴位置,取值同上)

<translate>

代表一个TranslateAnimation,偏移动画

  • android:fromXDelta(动画起始时 X坐标上的位置 )
  • android:toXDelta(动画结束时 X坐标上的位置)
  • android:fromYDelta(动画起始时 Y坐标上的位置 )
  • android:toYDelta(动画结束时 Y坐标上的位置 )

取值举例: android:toXDelta=”100%”,表示自身的100%,也就是从View自己的位置开始 android:toXDelta=”80%p”,表示父层View的80%,是以它父层View为参照的

<rotate>

代表一个RotateAnimation, 旋转动画 属性:

  • android:fromDegrees(动画开始时角度)
  • android:toDegrees(动画结束时角度)
  • android:pivotX(旋转中心的X坐标)
  • android:pivotY(旋转中心的Y坐标)

补间动画例子:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
    </set></set>

代码中使用:

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);

Frame Animation

文件路径:res/drawable/filename.xml 这样的一个资源指向一个AnimationDrawable对象 资源引用:

  • Java中引用:R.drawable.filename
  • XML中引用:@drawable/filename

语法

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource_name"
        android:duration="integer" /></animation-list>

属性:

  • android:oneshot(是否只播放一次)

例子:

<?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/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /></animation-list>

一个item表示一帧,一帧对应一张图片,duration表示持续的时间。

代码中使用:

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
rocketAnimation.start();

本节课主要讲解了Android中anim资源的知识点和具体使用方法,如需要获取更详细的资料,可以访问以下地址: http://www.android-doc.com/guide/topics/resources/animation-resource.html