像Google Now Launcher Menu Animation这样的Android 3D动画

 手机用户2502873837 发布于 2023-01-19 06:12

我需要像这样在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没有显示

1 个回答
  • 关闭

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

    (您可以在此处观看结果 - 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();
    }
    

    2023-01-19 06:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有