首页 > 解决方案 > Python Kivy:如何优化所有设备的屏幕分辨率?

问题描述

我刚开始使用 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: 30spacing: root.height*.007)?任何帮助对像我这样的初学者都有好处。我应该如何优化所有小部件和文本?感谢阅读和回答。。

标签: androidoptimizationkivyscreenresolution

解决方案


首先,不要用来Window.size控制窗口的大小,因为你不知道你的设备最终会是什么大小。其次,在 kv 中,您可以使用sp()dp()辅助函数定义字体大小,例如:

Label:
  text: 'Hello'
  font_size: sp(18)

要在开发时预览您的应用程序,您可以通过以下方式使用不同的设备进行测试:

  1. 检查相应设备的分辨率
  2. 检查设备的 dpi

因此,例如模拟三星 S9+,其分辨率1440x2960和 dpi 为529. 你会像这样运行你的应用程序:

python main.py --size=1440x2960 --dpi=529

这将为您提供您想要的结果,如果使用此方法,我发现使用dp()辅助函数比使用 dpi 更容易,sp()因为您现在拥有的是 dpi,因此 kivy 可以使用它。

快速说明一下,如果您的屏幕小于指定尺寸,例如在我的笔记本电脑上,分辨率为1366x768,您只需按比例缩小尺寸,例如运行它:

python main.py --size=360x740 --dpi=529

它的分辨率相同,但缩放到原始尺寸的四分之一左右,以适合您的屏幕。

仅供参考,您也可以在文件中使用dp()andsp()函数.py,只需像这样导入它们:

from kivy.metrics import dp, sp


推荐阅读