【问题标题】:Android 3d animation like Google Now Launcher Menu AnimationAndroid 3d 动画,如 Google Now 启动器菜单动画
【发布时间】:2014-03-12 03:39:04
【问题描述】:

我需要像这样在活动或片段之间制作动画。我用Android Api >=14.

http://www.youtube.com/watch?v=cNMqIv5Ocnk - 这是 Nexus5 启动器

我已经尝试过使用 Android ObjectAnimator 制作动画,但它与此视频动画不太相似。

提前致谢。

我试过这段代码

(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 不显示

【问题讨论】:

    标签: android animation 3d


    【解决方案1】:

    关闭

    经过多次尝试,我找到了决定。

    (您可以在这里查看结果 - http://www.youtube.com/watch?v=Npn0c68OkYs)

    我在 Android 资源文件夹 anim

    中创建了 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();
    }
    

    【讨论】:

    • 这对我不起作用,我将 anim 目录更改为 animator,现在的资源是 R.animator.gla_there_come
    猜你喜欢
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多