android - 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: 30
为spacing: root.height*.007
)?任何帮助对像我这样的初学者都有好处。我应该如何优化所有小部件和文本?感谢阅读和回答。。
解决方案
首先,不要用来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()
辅助函数比使用 dpi 更容易,sp()
因为您现在拥有的是 dpi,因此 kivy 可以使用它。
快速说明一下,如果您的屏幕小于指定尺寸,例如在我的笔记本电脑上,分辨率为1366x768
,您只需按比例缩小尺寸,例如运行它:
python main.py --size=360x740 --dpi=529
它的分辨率相同,但缩放到原始尺寸的四分之一左右,以适合您的屏幕。
仅供参考,您也可以在文件中使用dp()
andsp()
函数.py
,只需像这样导入它们:
from kivy.metrics import dp, sp
推荐阅读
- typescript - 如何使用函数返回类型作为变量类型?
- r - 对于不同行组的R中的in函数
- android - 应用易受 Intent 重定向问题的影响
- vue.js - 如何将惯性JS与quasar框架集成?
- python-3.x - Django + MQTT 如何在视图中发出请求并等待响应
- oracle - 如何理解给定的 sysdate 是 Date 或 Timestamp
- reactjs - 如何使用 React.js 进行突变?
- javascript - 使用谷歌表格数据的自定义图表
- javascript - 后台选项卡中的播放器不播放下一个播放列表曲目(自动播放策略?)
- android - Android - 如何从 Mapbox 中的 SymbolManager 中删除单个 SymbolOptions