Правильное использование метрик с Kivy (поэтому графический интерфейс хорошо масштабируется на разных устройствах)

Я пытаюсь сделать так, чтобы моя игра хорошо выглядела/масштабировалась на разных устройствах. Я пытаюсь ввести метрики dp и sp в свои приложения, насколько это возможно, но в данном случае я рефакторинг игры, чтобы использовать эти метрики для макета и размера виджета.

Раньше размер моих макетов определялся с помощью size_hint, чтобы все получало свой размер относительно своего родителя (само приложение не имеет размера, как и окно, но корневой виджет/макет имеет size_hint=(1, 1)), теперь я столкнулся с заменой этой системы на значения dp и не могу понять, какими они должны быть.

Я думаю, что если я просто укажу размер корневого виджета, самого приложения или окна с помощью dp, то я мог бы продолжать использовать size_hinting, так как это будет иметь эффект просачивания вниз и, так сказать, правильно масштабировать все сверху вниз. И для этого казалось, что получение разрешения или плотности экрана устройства было бы большим подспорьем (поэтому я мог бы использовать его для определения размера моего корневого виджета/приложения/окна для каждого устройства). Возможно ли это с Киви? Будет ли это работать? Есть ли способ лучше? Чтобы ты делал? Спасибо


person Totem    schedule 24.06.2015    source источник


Ответы (1)


Использование одного только size_hint уже гарантирует степень независимости от масштаба, поскольку (как вы заметили) все размеры будут относительными.

Kivy внутренне проверяет некоторые значения разрешения устройства, и это в основном точка dp; что-то вроде dp(10), например, должно быть одного и того же фактического размера на любом устройстве с точки зрения реального размера на экране, например. сантиметры. На самом деле это будет не совсем правильно, если ничего другого, я думаю, устройства не сообщают о точно правильных результатах, но если это не очень важно, оно уже позаботится о том, чтобы все в основном выглядело одинаково везде.

Я не уверен, что вы имеете в виду под настройкой размера приложения - в оконном менеджере Android приложение просто заполняет экран (по крайней мере, в большинстве случаев).

person inclement    schedule 24.06.2015
comment
Это дает мне больше надежды на то, что dp и size_hint смогут решить мою проблему. Однако я замечаю, что когда возился с 'python main.py -m screen:etc.' что экраны, такие как nexus7.2 и nexus7, делают мою игру слишком широкой (растянутой), и игра кажется менее играбельной. Это то, что заставило меня задуматься о том, как определить размер экрана/dpi/плотность. Если бы я мог обнаружить экран более определенного размера, возможно, я мог бы внести соответствующие изменения в ширину (например) экрана. - person Totem; 25.06.2015