Kivy如何识别屏幕是竖屏还是横屏

How to identify whether the screen is in Portrait or Landscape in Kivy

我刚刚使用 kivy 制作了一个 apk 应用程序。在代码中,我根据屏幕的比例定义了所有小部件的位置。但是,当我旋转屏幕时,比如说,从纵向到横向,绝对坐标仍然保持不变,并且不太适合。

有没有办法判断是竖屏还是横屏?我需要这个以便在用户旋转 phone.

时重新定义我的小部件的位置

最好不要直接用绝对坐标,而是用kivy的layout 类来实现相对定位(你也可以手动指定相对定位,但是比较难也比较冗长,而且你如果你这样做,只是在重新设计布局。

无论如何,您问题的直接答案是可能有一个 android api 函数,您可以调用它来获取方向,如果您确实需要,或者实际上您可能关心特别是关于kivy.core.window.Window.size

暴露的window大小

使用 pyjnius 很有可能。

from jnius import autoclass

activity = autoclass('org.kivy.android.PythonActivity').mActivity
config = activity.getResources().getConfiguration()

print('Orientation :', config.orientation)

# 1 is potrait 2 is landscape