我需要像这样在Activities或Fragments之间制作动画.我用Android Api >=14.
http://www.youtube.com/watch?v=cNMqIv5Ocnk - 它是Nexus5启动器
我已经尝试过使用Android ObjectAnimator的动画,但它与这个视频动画并不是很相似.
提前致谢.
我试过这段代码
(gla_on.xml):
gla_off.xml:
并把它放入这段代码中:
getFragmentManager() .beginTransaction() .setCustomAnimations(R.anim.gla_on, R.anim.gla_off) .replace(R.id.container, new NextFragment()) .addToBackStack(null) .commit();
但是NextFragment没有显示
关闭
经过多次尝试,我找到了决定.
(您可以在此处观看结果 - http://www.youtube.com/watch?v=Npn0c68OkYs)
我在Android的资源文件夹中创建4个动画动画
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>
gla_there_gone.xml
<set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator android:duration="500" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0" /> <objectAnimator android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="scaleY" android:valueFrom="1" android:valueTo="12" /> <objectAnimator android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="scaleX" android:valueFrom="1" android:valueTo="12" /> </set>
gla_back_gone.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="12" android:valueTo="1" /> <objectAnimator android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="scaleX" android:valueFrom="12" android:valueTo="1" /> </set>
gla_back_come.xml
<set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator android:duration="500" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0" /> <objectAnimator android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="scaleY" android:valueFrom="1" android:valueTo="0" /> <objectAnimator android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="scaleX" android:valueFrom="1" android:valueTo="0" /> </set>
我将下面的代码添加到FragmentActivity中:
public void goToNext() { mShowingNext = true; getFragmentManager() .beginTransaction() .setCustomAnimations(R.anim.gla_there_come, R.anim.gla_there_gone) .replace(R.id.container, new NextFragment()) .commit(); } public void goBack() { mShowingNext = false; getFragmentManager() .beginTransaction() .setCustomAnimations(R.anim.gla_back_gone, R.anim.gla_back_come) .replace(R.id.container, new MainFragment()) .commit(); }