我一直在寻找一种 Kivy 解决方案来捕获 Android 设备从一个方向到另一个方向的旋转。我已经尝试了下面的两种窗口方法,但在旋转设备时都没有执行 on_rotate
或 rotate_screen
例程。我看到 java 中有一个 onConfigurationChanged
事件,但我找不到 Kivy 的相同事件处理。
Window.on_rotate(self.on_rotate)
Window.bind(on_rotate=self.rotate_screen)
我在 logcat 中得到的是以下指示设备已旋转但我的应用程序从未看到这些事件的消息。
I/InputReader(270): Reconfiguring input devices. changes=0x00000004
I/InputReader(270): Device reconfigured: id=3, name='ilitek_i2c', surface size is now 1280x800, mode is 1
I/ActivityManager(270): Config changed: {1.0 0mcc0mnc en_US sw800dp w1280dp h752dp xlrg land finger -keyb/v/h -nav/h s.8}
最佳答案
我认为 on_rotate 只跟踪 Kivy 的内部旋转(这是在 OpenGL 中完成的,与 Android 级别旋转无关)。
您可能可以使用 pyjnius 来处理普通的 Java 方法,但我不知道细节。一个可能同样有效的简单解决方案是观察 Window.size
(from kivy.core.window import Window
)——这应该检测到从纵向到横向的变化。
关于android - 如何在 Kivy 中检测 Android 上的屏幕旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430824/