Android 3d动画,例如Google Now Launcher Menu动画 [英] Android 3d animation like Google Now Launcher Menu Animation

查看:77
本文介绍了Android 3d动画,例如Google Now Launcher Menu动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要像这样在活动或片段之间制作动画。我使用的是 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆