Python Kivy:如何优化所有设备的屏幕分辨率?
Posted
技术标签:
【中文标题】Python Kivy:如何优化所有设备的屏幕分辨率?【英文标题】:Python Kivy: How to optimize screen resolution for all devices? 【发布时间】:2020-10-11 09:11:07 【问题描述】:我刚开始使用 kivy 进行编码并正在研究它。但我想知道,我怎样才能优化 apk 应用程序的屏幕分辨率。我的意思是,我使用Window.size = (423,750)
并在使用此分辨率编码后进行控制。因此尝试使用 boxlayouts、size_hints 创建所有小部件。但是当我在 Genymotion 或 android 设备上检查我的应用程序时,我的小部件看起来不像我在 linux 上创建的。
例如,我将它用于文本:font_size: '18sp'
。但它看起来不像我想要的那样。当我检查不同的 genymotion android 设备时,它的大小会发生变化,有时 boxlayout 会阻止它的大小并使其不可读。
在每个设备上是否有任何用于自动屏幕分辨率的命令,或者我应该像这样创建这些 font_size:font_size: str(root.width*.05)+'sp'
(所以我应该将我的所有代码像这些 spacing: 30
更改为 spacing: root.height*.007
)?任何帮助对像我这样的初学者都有好处。我应该如何优化所有小部件和文本?感谢阅读和回答..
【问题讨论】:
【参考方案1】:首先,不要使用Window.size
来控制窗口的大小,因为您不知道您的设备最终会是什么大小。其次,在 kv 中,您可以使用 sp()
或 dp()
辅助函数定义字体大小,例如:
Label:
text: 'Hello'
font_size: sp(18)
要在开发时预览您的应用,您可以通过以下方式使用不同的设备进行测试:
-
检查相应设备的分辨率
检查设备的 dpi
因此,例如模拟三星 S9+,其分辨率为1440x2960
,dpi 为529
。你会像这样运行你的应用程序:
python main.py --size=1440x2960 --dpi=529
这将为您提供所需的结果,如果使用此方法,我发现使用 dp()
辅助函数而不是 sp()
更容易,因为您现在拥有的是 dpi,因此 kivy 可以使用它.
请注意,如果您的屏幕小于指定尺寸,例如在我的笔记本电脑上,分辨率为1366x768
,您只需缩小尺寸,例如运行如下:
python main.py --size=360x740 --dpi=529
它的分辨率相同,但缩放到原始尺寸的四分之一左右以适合您的屏幕。
仅供参考,您也可以在 .py
文件中使用 dp()
和 sp()
函数,只需像这样导入它们:
from kivy.metrics import dp, sp
【讨论】:
以上是关于Python Kivy:如何优化所有设备的屏幕分辨率?的主要内容,如果未能解决你的问题,请参考以下文章