我正在尝试实现此处找到的动画。
Android 3d animation like Google Now Launcher Menu Animation
但是,我似乎无法使用 objectAnimator,因为我正在使用支持库 fragment 。当我尝试使用上述链接中的代码时,我收到一条错误消息,指出 Unknown animation: objectAnimator。
如何在添加/删除 fragment 时完成这样的动画,同时仍然使用 fragment 支持库?
更新
根据下面 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>
最佳答案
您可以将 ObjectAnimator
替换为经典的 Animation .它们可以以大致相同的方式创建。不是将 xml 文件放在 animator
资源目录中,而是将它们放在 anim
资源目录中。 xml 文件中的动画本身有更具体的命名。您可以命名要执行的动画,而不是命名属性:
<?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>
关于Android Fragment Transaction 自定义动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466657/