【发布时间】:2020-12-18 18:09:30
【问题描述】:
我需要知道使用 Kivy 在 Python 中创建的应用程序中的屏幕分辨率(以像素为单位)。具体问题涉及Android。不幸的是,Kivy 本身不想将从 GL 获得的信息传输给用户,所以我必须使用变通方法。在Android下是pyjnius,根据pyjnius manual和DisplayMetrics manual我试过这段代码:
from kivy.app import App
from kivy.uix.button import Button
from kivy.utils import platform
from kivy.core.window import Window
from kivy.graphics import Canvas, Rectangle, Color
myheight=-100
mywidth=-100
myDPI=-100
gDPI=-100
Window.fullsceen = True
if platform == 'android':
from jnius import autoclass
DisplayMetrics = autoclass('android.util.DisplayMetrics')
metrics = DisplayMetrics()
gDPI=metrics.getDeviceDensity()
myheight = metrics.heightPixels
mywidth = metrics.widthPixels
myDPI = metrics.densityDpi
class MainApp(App):
def build(self):
b = Button(text="Height: "+ str(myheight) + "\nWidth: " + str(mywidth) + "\nDPI: " + str(myDPI) + "\ngetDPI: " + str(gDPI)
+ '\nWindow.size:' + str(Window.size), color = [0,0,0,1])
with b.canvas:
Color(0,1,1, .2)
Rectangle(size = Window.size, pos = (0,0))
return b
MainApp().run()
但在结果中,我有所有三个值 = 0,并且窗口大小 = 800px,独立于 platfrom。 Pyjnius 手动使用方法 getDeviceDensity() 未在 DisplayMetrics 方法中记录。有没有其他方法可以在 android 下检测 kivy 中的屏幕分辨率?我可以直接调用 SDL2 来检测屏幕分辨率以及必须在哪里正确完成吗? 截图(按要求)附后。
提前致谢。
【问题讨论】:
标签: python android kivy pyjnius