簡體   English   中英

Android Fragment Transaction自定義動畫

[英]Android Fragment Transaction custom Animation

我正在嘗試實現此處找到的動畫。

Android 3d動畫,例如Google Now Launcher Menu動畫

但是,看起來好像不能使用objectAnimator,因為我正在使用支持庫片段。 當我嘗試使用以上鏈接中的代碼時,出現錯誤,指出該未知動畫:objectAnimator。

在仍然使用片段支持庫的情況下添加/刪除片段時,如何完成這樣的動畫?

UPDATE

按照下面DeeV的回答,我已經更新了其余的XML動畫。

gla_back_come.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500">

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

    <scale
        android:fromXScale="1"
        android:toXScale="0"
        android:fromYScale="1"
        android:toYScale="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator" />

</set>

gla_back_gone.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" >

    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

    <scale
        android:fromXScale="12.0"
        android:toXScale="1.0"
        android:fromYScale="12.0"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>

</set>

gla_there_come.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500">

    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

    <scale
        android:fromXScale="0.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>

</set>

gla_there_gone.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" >

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"/>

    <scale
        android:fromXScale="1.0"
        android:toXScale="12.0"
        android:fromYScale="1.0"
        android:toYScale="12.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>

</set>

您將用經典的Animation代替ObjectAnimator 可以以大致相同的方式創建它們。 無需將xml文件放在animator資源目錄中,而是將它們放在anim資源目錄中。 xml文件中的Animations本身更具體地命名。 您無需命名屬性,而是命名要執行的動畫:

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

因此,例如在您發布的答案中,“ gla_there_come.xml”將來自以下內容:

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

  <objectAnimator
    android:duration="500"
    android:propertyName="alpha"
    android:valueFrom="0.0"
    android:valueTo="1.0" />
  <objectAnimator
    android:duration="500"
    android:interpolator="@android:interpolator/accelerate_decelerate"
    android:propertyName="scaleY"
    android:valueFrom="0"
    android:valueTo="1" />
  <objectAnimator
    android:duration="500"
    android:interpolator="@android:interpolator/accelerate_decelerate"
    android:propertyName="scaleX"
    android:valueFrom="0"
    android:valueTo="1" />

</set>

對此:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     duration="500">

  <alpha
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />

  <scale
    android:fromXScale="0.0"
    android:toXScale="1.0"
    android:fromYScale="0.0"
    android:toYScale="1.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>

</set>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM