问题描述
我需要了解使用Kivy在Python中创建的应用程序中的屏幕分辨率(以像素为单位)。具体问题涉及Android。不幸的是,Kivy本身不想将从GL获得的信息传输给用户,因此我必须使用变通办法。根据{{3}}和pyjnius 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,1])
with b.canvas:
Color(0,1,.2)
Rectangle(size = Window.size,pos = (0,0))
return b
MainApp().run()
但是结果是我所有三个值= 0,并且窗口大小= 800px,独立于platfrom。 Pyjnius手动使用方法getDeviceDensity()未在displayMetrics方法中进行记录。有什么其他方法可以在android下的kivy中检测屏幕分辨率吗?我可以直接调用SDL2来检测屏幕分辨率以及必须正确执行的操作吗? 屏幕快照(按要求)已附加。DisplayMetrics manual
谢谢。
解决方法
不幸的是,Kivy本身不想将从GL获得的信息传输给用户
我不确定您的意思是什么,kivy.core.window.Window.size
应该给出gl显示尺寸。当然,这与您要求的屏幕分辨率不同-我不确定这是否对您重要。
但是结果是我所有三个值= 0
这似乎是由于例如在this question中。