【问题标题】:Activity transition obscured when new activity is fixed in position [duplicate]当新活动固定在位置时,活动转换被遮挡[重复]
【发布时间】:2014-09-30 19:31:03
【问题描述】:

当在我的 Activity 中按下一个按钮时,我想完成当前的 Activity 并开始一个新的。我希望新活动固定到位,并在旧活动滑出屏幕时显示在传出活动后面。

Intent intent = new Intent(this, OverviewActivity.class);
startActivity(intent);
finish();
overridePendingTransition(R.anim.hold, R.anim.slide_out_top);

因此,对于新活动,我将应用 hold 动画;这是一个不为任何东西设置动画的占位符。我也尝试过传递0而不是R.anim.hold,但这也不起作用。

<?xml version="1.0" encoding="utf-8"?>
<translate
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:fromXDelta="0"
  android:toXDelta="0"
  android:duration="@integer/slide_anim_duration" />

新 Activity 会立即显示在传出 Activity 之上的固定位置,因此旧 Activity 的滑动动画会被遮挡。

有什么方法可以让新的活动被绘制在旧活动的后面,而旧活动正在屏幕上显示动画?

【问题讨论】:

  • 你是在线程中调用意图还是什么。
  • @GeorgeThomas 不,这是响应按钮单击的主线程。
  • @pskink 没有区别。
  • 我已经弄清楚了问题所在。新活动将立即显示在其固定位置在传出活动的顶部。所以旧活动的滑动动画被遮挡了。
  • 感谢各位的帮助。在我确切了解问题所在后,我找到了一个现有的答案。

标签: android android-activity transitions


【解决方案1】:

重新排序语句可能对您有用

      Intent intent = new Intent(this, OverviewActivity.class);
      overridePendingTransition(R.anim.hold, R.anim.slide_out_top);   
      startActivity(intent);
      finish();

当您开始新活动并在最后一个活动中调用 finish() 时,您将覆盖转换。

【讨论】:

  • 不,这没有帮助。文档指出 overridePendingTransition() 应该在 finish()startActivity() 之后调用。
  • 交换finish()startActivity() 的顺序也无济于事。
  • 谢谢,但这是一个微妙的不同问题,那里接受的答案并不能解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
相关资源
最近更新 更多