Сделайте приложение KivyMD android подходящим для всех размеров экрана - PullRequest
0 голосов
/ 07 августа 2020

Цель: Сделать мое приложение подходящим для всех android устройств

Я пытаюсь создать игру, используя kivy и KivyMD, и я не знаю, как именно сделать мой код подходят для всех android устройств.

В документации kivyMD разработчики часто используют метрику «dp» c (пиксели, не зависящие от плотности) для описания размера виджетов.

Когда я используйте python3 main.py -m screen:note2,portrait, чтобы посмотреть, как мое приложение будет выглядеть на note2 с приведенным ниже кодом, макет выглядит так, как хотелось бы, но проблема возникает, когда я использую устройство с другой плотностью экрана (скажем, 3 или 1) (https://github.com/kivy/kivy/blob/master/kivy/modules/screen.py). 8 раз из 10 мое приложение отлично выглядит на устройстве с плотностью экрана 2, но для других плотностей экрана следует ли мне делать разные версии моего кода?

Например, с плотностью экрана 2 я можно было использовать:

size: "280dp", "180dp"

Когда плотность равна 1, я мог бы использовать что-то вроде:

size: "140dp", "90dp" et c ...

Я действительно хотел бы знать, как это сделать правильно. Заранее спасибо

main.py

from kivy.lang import Builder

from kivymd.app import MDApp

KV = '''
Screen:
    MDCard:
        orientation: "vertical"
        padding: "8dp"
        size_hint: None, None
        #Those dimensions look great when the density is two AND Width of the screen is less than 1920
        size: "280dp", "180dp"
        pos_hint: {"center_x": .5, "center_y": .5}
        MDLabel:
            text: "Title"
            theme_text_color: "Secondary"
            size_hint_y: None
            height: self.texture_size[1]
        MDSeparator:
            height: "1dp"
        MDLabel:
            text: "Body"
'''


class TestCard(MDApp):
    def build(self):
        return Builder.load_string(KV)


TestCard().run()  
...