-1

有谁知道如何应对这个问题?使用该android.app.Activity#setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE)方法几乎总是会导致在旋转过程中出现一瞬间的黑屏。

但是如果我旋转智能手机本身,那么黑屏永远不会出现。如何摆脱黑屏?是该setRequestedOrientation()方法的Android问题,还是我做错了什么?

编辑:AFAIK 如果我们的布局相当繁重,则可能会发生带有调用的黑屏setRequestedOrientation(),此时在 UI 线程中初始化它需要更多时间。例如,如果您尝试调用setRequestedOrientation()“Hello World!” 布局较轻的应用程序,您不会看到黑屏。因此,UI 线程上的加载可能是您旋转时黑屏的原因setRequestedOrientation()。但是,另一方面,为什么当我旋转屏幕改变手机方向时它永远不会出现?

4

2 回答 2

1

我找到的唯一解决方案。考虑我想把屏幕变成横向,我该怎么做:

  1. 我从要旋转的活动中删除了带有重物的根片段。
  2. 在我要旋转的 Activity 中,我打开一个空白的 Activity 片刻以覆盖黑屏。ActivitysetRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE)在其onCreate回调中调用并在 timeout = 500 ms 后自行关闭。我使用淡入/淡出动画打开/关闭活动。
  3. 在我想旋转的活动中,我调用setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE)延迟 100 毫秒的帖子。这开始旋转。
  4. 旋转完成后,在onCreate我将移除的 Fragment 添加回来。

而已。旋转到横向完成,黑屏被完全覆盖。

于 2019-02-18T18:26:23.790 回答
0

编辑:

我有同样的问题。在旧版本的android中,如果布局的内容很重(如果它包含高分辨率图像等),正在运行的活动试图重新创建布局以改变方向但无法实现这一点。

作为一种解决方案,我们可以创建 2 种不同的布局资源,如纵向和横向,指定我们将使用哪一个,并使 android 更容易。

于 2021-05-24T19:53:29.067 回答