Python Kivy: Как оптимизировать разрешение экрана для всех устройств? - PullRequest
0 голосов
/ 21 июня 2020

Я только начал кодировать с помощью kivy и работать над ним. Но мне интересно, как я могу оптимизировать разрешение экрана для приложений apk. Я имею в виду, что я использую Window.size = (423,750) и контролирую после кодирования с этим разрешением. Итак, пытаясь создать все виджеты с помощью boxlayouts, size_hints. Но когда я проверяю свое приложение на устройствах Genymotion или Android, мои виджеты не выглядят так, как будто я создал linux.

Например, я использую это для текстов: font_size: '18sp'. Но это не ' t выглядит так, как я хотел. Его размер меняется, когда я проверяю на разных устройствах genymotion android, и иногда boxlayout блокирует его размер и делает его нечитаемым.

Есть ли какая-либо команда для автоматического разрешения экрана на каждом устройстве или должен ли я создать эти font_size вот так: font_size: str(root.width*.05)+'sp' (Так что, должен ли я изменить все свои коды, подобные этим spacing: 30, на spacing: root.height*.007)? Любая помощь будет полезна для таких новичков, как я. Как мне оптимизировать все виджеты и тексты? Спасибо, что прочитали и ответили.

1 Ответ

0 голосов
/ 21 июня 2020

Во-первых, НЕ используйте Window.size для управления размером окна, поскольку вы не знаете, какого размера будет ваше устройство в конечном итоге. Во-вторых, в kv вы можете определить размер шрифта с помощью вспомогательных функций sp() или dp(), например:

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

Чтобы предварительно просмотреть свое приложение во время разработки, вы можете протестировать его на разных устройствах:

  1. Проверка разрешения соответствующего устройства
  2. Проверка dpi устройства

Так, например, эмулируйте Samsung S9 +, который имеет разрешение 1440x2960 и 529 dpi. вы можете запустить свое приложение следующим образом:

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

Это даст вам желаемый результат, если использовать этот метод, мне будет намного проще работать с помощником dp() вместо sp(), так как теперь у вас есть dpi, поэтому kivy может это использовать.

Просто небольшое примечание, если ваш экран меньше указанного размера, например, на моем ноутбуке с разрешением 1366x768, вам просто нужно уменьшить размер, например, запустите его как:

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

Это такое же разрешение, но с масштабированием примерно до четверти исходного размера, чтобы сделать его поместится на вашем экране.

К вашему сведению, вы также можете использовать функции dp() и sp() в своем файле .py, просто импортируйте их следующим образом:

from kivy.metrics import dp, sp

...