Android動畫資源(二)——補間動畫資源

Android animations.png

Android動畫資源系列文章:Android動畫資源文件總結(jié)

Tween animation

  • 用XML定義的動畫,在圖形上執(zhí)行諸如旋轉(zhuǎn)、透明度變化、移動和拉伸等轉(zhuǎn)換。
  • 文件位置
    res/anim/filename.xml
    該文件名將作為資源ID。
  • 資源引用方式
    Java中: R.anim.filename
    XML中: @[package:]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>

補間動畫資源文件的根標簽只能是<alpha>, <scale>, <translate>, <rotate>或者 <set>中的一個。
<set>可以包括其他動畫元素。
<set>內(nèi)也可以包含<set>元素。

  • 元素

    • <set>
      能夠包含<alpha>, <scale>, <translate>, <rotate>或者其他<set>的容器。 相當(dāng)于java代碼中的AnimationSet。
      屬性
      • android:interpolator
        插值器, 該值必須是插值器的資源的引用。 可以使用平臺默認插值器資源,頁可以創(chuàng)建自己的插值器。
      • android:shareInterpolator
        Boolean類型。如果希望所有子元素都使用同一個插值器,則為“true”。
    • <alpha>
      淡入淡出動畫。相當(dāng)于Java代碼中的AlphaAnimation.
      屬性
      • android:fromAlpha
        float類型。透明度的起始值,fromAlpha為0.0代表透明,fromAlpha為1.0代表不透明。
      • android:toAlpha
        float類型。透明度的終止值,fromAlpha為0.0代表透明,fromAlpha為1.0代表不透明。
    • <scale>
      縮放動畫: pivotX和pivotY能夠指定縮放點。相當(dāng)于Java代碼中的ScaleAnimation。
      屬性
      • android:fromXScale X方向開始縮放時的值
      • android:toXScaleX 方向結(jié)束縮放時的值
      • android:fromYScale Y方向開始縮放時的值
      • android:toYScale Y方向結(jié)束縮放時的值
      • android:pivotX X方向的縮放點
      • android:pivotY Y方向的縮放點
    • <translate>
      水平或豎直移動動畫。
      屬性值支持以下三種格式:
      • 值從-100%到100%,表示相對于自身的百分比;
      • 值從-100%p到100%p,表示相對于parent的百分比;
      • 一個沒有后綴的浮點值,表示一個絕對值。相當(dāng)于Java代碼中的translateanimation。
        屬性
      • android:fromXDelta Float or 百分比類型.X方向開始時的偏移量。值為Float類型,表示相對于正常位置的像素值,值為百分比類型且以%結(jié)尾,表示相對于控件寬度的百分比;值為百分比類型且以%p結(jié)尾,表示相對于父控件的百分比
      • android:toXDelta Floator 百分比類型 X方向結(jié)束時的偏移量。 值為Float類型,表示相對于正常位置的像素值,值為百分比類型且以%結(jié)尾,表示相對于控件寬度的百分比;值為百分比類型且以%p結(jié)尾,表示相對于父控件的百分比
      • android:fromYDelta Float or 百分比類型 Y方向開始時的偏移量。值為Float類型,表示相對于正常位置的像素值,值為百分比類型且以%結(jié)尾,表示相對于控件寬度的百分比;值為百分比類型且以%p結(jié)尾,表示相對于父控件的百分比
      • android:toYDelta Float or 百分比類型 Y方向結(jié)束時的偏移量。值為Float類型,表示相對于正常位置的像素值,值為百分比類型且以%結(jié)尾,表示相對于控件寬度的百分比;值為百分比類型且以%p結(jié)尾,表示相對于父控件的百分比
    • <rotate>
      旋轉(zhuǎn)動畫。相當(dāng)于Java代碼中的RotateAnimation。
  • 舉例
    文件保存位置:res/anim/hyperspace_jump.xml:

<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>

下面代碼將上面hyperspace_jump.xml動畫應(yīng)用到ImageView上:

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。