Android Lollipop home按钮返回动画

标签 android android-5.0-lollipop activity-transition

我正在尝试新的 Android API,特别是新的动画。我有两个 Activity ,并在第二个 Activity 上使用 setEnterTransition() 和 setExitTransition() 进行幻灯片转换。当我使用其中的按钮或使用后退按钮切换 Activity 时,一切正常,但是当我处于第二个 Activity 并按下主页按钮时,不会播放返回动画...

第二个 Activity onCreate() 方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getActionBar() != null) {
        getActionBar().setDisplayShowHomeEnabled(false);
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

    Slide slideTransition = new Slide();
    slideTransition.setDuration(1000);
    slideTransition.setSlideEdge(Gravity.RIGHT);

    getWindow().setEnterTransition(getSlideTransition(Gravity.RIGHT, 1000));
    getWindow().setExitTransition(getSlideTransition(Gravity.LEFT, 1000));

    getWindow().setAllowEnterTransitionOverlap(true);

    setContentView(R.layout.activity_second);

    //...
}

第一个 Activity 在 list 中设置为第二个 Activity 的父级。

我找到了一些使用 overridePendingTransition() 方法的解决方案,但我想要一个使用新方法的解决方案(如果可能的话)。

谢谢!

最佳答案

这是设计使然。仅当 Activity 显式完成时(即按后退按钮或调用 finishAfterTransition()),才会触发返回转换。当您按下主页按钮时,您会将应用程序置于后台,以便用户稍后可以返回到同一 Activity 。如果您要在按下主页按钮时完成该 Activity ,用户会很困惑为什么当他们稍后返回应用程序时没有进入相同的 Activity 。

还值得一提的是,新的 Lollipop 转换 API 并不旨在取代 overridePendingTransition()。两者有着本质的不同。当您从一个 Activity 切换到另一个 Activity 时,Lollipop 转换 API 为您提供了一种单独为 Activity View 层次结构内的内容添加动画效果的方法。另一方面,overridePendingTranition() 允许您在从屏幕上添加或删除 Activity 窗口时覆盖系统的默认窗口动画。换句话说,前者对 Activity 窗口内的 View 进行操作,而后者对整个 Activity 窗口本身进行操作。

两者之间的最后一个主要区别是,新的 Lollipop 转换 API 只能在属于同一任务的两个 Activity 之间工作。如果您想在属于两个不同任务的两个 Activity 之间导航时执行退出/进入动画,则需要改用 overridePendingTransition()

关于Android Lollipop home按钮返回动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536623/

相关文章:

android - ImageView 共享元素转换(在 Activity 之间)以错误的 scaleType 开始

android - 控制共享元素动画中的特定元素

android - 在 Android 5.0 上的 Activity 之间转换时如何排除 ActionBar

c# - 将 aar 转换为 DLL 库

java - 如何在 android 的 recyclerview 中显示最后一项的选择?

android - java.io.IOException : read failed, 套接字可能关闭或超时,读取 ret : -1 on Android 5. 0.1 Lollipop 版本

Android Camera Intent 与 Android L 崩溃

java - 微调器,如果再次选择项目

android - AVD 管理器 - 无法创建 Android 虚拟设备

java - 点击按钮时通过代码放大android中的编辑文本