Android 3d动画,例如Google Now Launcher Menu动画 [英] Android 3d animation like Google Now Launcher Menu Animation
问题描述
我需要像这样在活动或片段之间制作动画。我使用的是 Android Api> = 14。
I need to make animation between Activities or Fragments like this. I use Android Api >=14.
http://www.youtube.com/watch?v=cNMqIv5Ocnk -它是Nexus5启动器
http://www.youtube.com/watch?v=cNMqIv5Ocnk - it's Nexus5 Launcher
我已经尝试过使用Android ObjectAnimator制作动画,但这与该视频动画不太相似。
I`ve already tried animation with Android ObjectAnimator, but it wasn't very similar to this video animation.
请先感谢。
我尝试过此代码
(gla_on.xml):
<objectAnimator
android:duration="0"
android:propertyName="alpha"
android:valueFrom="1.0"
android:valueTo="0.0" />
<objectAnimator
android:duration="1000"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="scaleY"
android:valueFrom="1"
android:valueTo="12" />
<objectAnimator
android:duration="1000"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="12" />
gla_off.xml:
<objectAnimator
android:duration="0"
android:propertyName="alpha"
android:valueFrom="0.0"
android:valueTo="1.0" />
<objectAnimator
android:duration="1000"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="scaleY"
android:valueFrom="1"
android:valueTo="12" />
<objectAnimator
android:duration="1000"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="12" />
并将其放入这段代码中:
getFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.gla_on, R.anim.gla_off)
.replace(R.id.container, new NextFragment())
.addToBackStack(null)
.commit();
但NextFragment不显示
but NextFragment doesn't show
推荐答案
已关闭
经过多次尝试,我找到了决定。
After many attempts I found the decision.
(您可以在此处观看结果- http://www.youtube.com / watch?v = Npn0c68OkYs )
(You can watch the result here - http://www.youtube.com/watch?v=Npn0c68OkYs )
我在Android资源文件夹 anim
I create 4 animations in Android Resource folder anim
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中添加了以下代码:
and I added the code below into my 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();
}
这篇关于Android 3d动画,例如Google Now Launcher Menu动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!