Python Kivy:如何优化所有设备的屏幕分辨率?

Python Kivy: How to optimize screen resolution for all devices?

我刚开始使用 kivy 编码并致力于 it.But 我想知道如何为 apk 应用程序优化屏幕分辨率。我的意思是,我使用 Window.size = (423,750) 并在使用此分辨率编码后进行控制。因此,尝试使用 boxlayouts 创建所有小部件,size_hints。但是当我在 Genymotion 或 Android 设备上检查我的应用程序时,我的小部件看起来不像我在 linux.

上创建的

例如,我将它用于文本:font_size: '18sp'。但是当我检查不同的 genymotion android 时,它看起来不像我 wanted.It 的大小变化设备,有时 boxlayout 会阻塞它的大小并使其不可读。

每个设备上是否有自动屏幕分辨率的任何命令,或者我应该像这样创建这些 font_size :font_size: str(root.width*.05)+'sp'(所以我应该像这样更改我的所有代码 spacing: 30spacing: root.height*.007 )?任何帮助对像 me.How 这样的初学者来说都是有益的,我应该优化所有小部件和文本吗?感谢阅读和回答..

首先,不要 使用 Window.size 来控制 window 的大小,因为您不知道设备的大小到底。其次,在 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() 辅助函数比 sp() 更容易,因为你现在拥有的是dpi 所以 kivy 可以使用它。

请注意,如果您的屏幕小于指定尺寸,例如在我的笔记本电脑上分辨率为 1366x768,您只需按比例缩小尺寸,例如 运行如:

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

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

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

from kivy.metrics import dp, sp