我一直在寻找一种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}
答案 0 :(得分:1)
我认为on_rotate只跟踪Kivy的内部旋转(这是在OpenGL中完成的,与Android级别的旋转无关)。
你可以使用pyjnius来处理普通的Java方法,但我不知道细节。一个可能同样有用的简单解决方案是观看Window.size
(from kivy.core.window import Window
) - 这应该检测从纵向到横向的变化。