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:如何优化所有设备的屏幕分辨率?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kivy-iOS 上修改屏幕分辨率

Kivy:解决行为

如何根据设备/屏幕分辨率调整屏幕?

python - 如何在python的kivy app模块中更改屏幕背景的颜色?

如何在 Kivy 中从 python 代码更改屏幕

如何使用 JavaScript 检测屏幕分辨率?