我需要知道使用Kivy在Python中创建的应用程序的屏幕分辨率(以像素为单位)。具体问题与Android有关。不幸的是,Kivy本身不想将从GL获得的信息传输给用户,所以我不得不使用变通方法。根据pyjnius manual和DisplayMetrics manual的说法,在Android下是pyjnius,我试过以下代码:
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手动使用DisplayMetrics方法中未记录的getDeviceDensity()方法。有没有其他方法可以在android下检测kivy的屏幕分辨率?我是否可以直接调用SDL2来检测屏幕分辨率以及必须在哪里正确执行? 随附屏幕截图(按要求)。
提前谢谢
我不确定你的意思,
kivy.core.window.Window.size
应该给出gl显示大小。当然,这与您要求的屏幕分辨率不同——我不确定这对您是否重要这似乎是出于this question中所述的原因
相关问题 更多 >
编程相关推荐