gpt4 book ai didi

android - 使用 setRequestedOrientation 了解旋转何时完成

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:05 25 4
gpt4 key购买 nike

我正在尝试编写一个 .apk 来测量旋转 Android 设备屏幕所需的时间(循环几次旋转)。

我正在调用 setRequestedOrientation() 将屏幕重新定向到 4 个位置(PORTRAITLANDSCAPEREVERSE_PORTRAITREVERSE_LANDSCAPE)。

我的问题是我无法判断旋转何时完成。我尝试了一些解决方案,但每个都有自己的问题。

  1. 我尝试使用 onConfigurationChanged()。问题在于,当传感器发生方向变化时会触发此方法,而不是 setRequestedOrientation()。实际上,在我之前调用 setRequestedOrientation() FULL_SENSOR 参数调用 setRequestedOrientation() 才能使 onConfigurationChanged 正常工作.
  2. 我尝试通过添加一个 while 循环来检查屏幕方向(以度为单位),使 setRequestedOrientation() 有点“阻塞”。我在 setRequestedOrientation() 之前调用了 android.view.Display.getRotation() 并用 while 循环阻塞,直到它发生变化。不幸的是,它也不起作用。它会在 UI 重新显示之前返回。
  3. 我尝试通过等待 onCreate() 再次调用来跟踪 Activity 的生命周期,以假设轮换已完成。以前,我一直在循环,直到我的计数器达到一个值,在每次迭代中调用 setRequestedOrientation()。在这种情况下,我的 while 循环变成了一个 if 语句,我假设 onCreate 每次都会调用该函数,但是 onCreate() 在几次之后没有被调用迭代。 UI 似乎也没有重绘。
  4. 我在网上找到的最终解决方案(但还没有完全实现)是在 setRequestedOrientation() 之后立即使用 waitForIdleSync() 方法。 waitForIdleSync() 是 Instrumentation 类的一部分,我认为这只是为了测试而不是为了标准 .apk。

任何想法都非常受欢迎。非常感谢您的帮助。

最佳答案

您应该尝试使用: http://developer.android.com/reference/android/view/OrientationEventListener.html

您需要先调用 enable(),然后您会在设备发生的每一次旋转变化时收到通知。

关于android - 使用 setRequestedOrientation 了解旋转何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com