如何在Kivy上检测Android上的屏幕旋转?

时间:2016-09-10 21:38:44

标签: android python rotation kivy onconfigurationchanged

我一直在寻找一种Kivy解决方案来捕捉Android设备从一个方向旋转到另一个方向。我尝试了下面的两种窗口方法,但在旋转设备时都没有执行on_rotaterotate_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}

1 个答案:

答案 0 :(得分:1)

我认为on_rotate只跟踪Kivy的内部旋转(这是在OpenGL中完成的,与Android级别的旋转无关)。

你可以使用pyjnius来处理普通的Java方法,但我不知道细节。一个可能同样有用的简单解决方案是观看Window.sizefrom kivy.core.window import Window) - 这应该检测从纵向到横向的变化。