【问题标题】:Android Lollipop home button return animationAndroid Lollipop home键返回动画
【发布时间】:2014-12-19 06:51:10
【问题描述】:

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

第二个活动 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);

    //...
}

第一个活动被设置为清单中第二个活动的父级。

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

谢谢!

【问题讨论】:

  • 我们可以看看你的代码尝试吗?
  • 嗨@ouflak,感谢您的快速回复。我编辑了问题并从第二个活动中插入了一些代码。
  • 但是当我在第二个活动中并且我按下主页按钮时,返回动画没有播放......我猜这是设计使然。

标签: android android-5.0-lollipop activity-transition


【解决方案1】:

这是设计使然。返回转换仅在活动明确完成时触发(即您按下后退按钮或调用finishAfterTransition())。当您按下主页按钮时,您会将应用程序置于后台,以便用户稍后可以返回到相同的活动。如果您在按下主页按钮时完成活动,用户会感到困惑,为什么他们稍后返回应用程序时没有被带到相同的活动。

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

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

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多