Как ускорить запуск приложения Kivy, которое содержит screen_manager со многими экранами? - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь создать простое приложение с множеством экранов, использующее Kivy и Python, которое содержит текстовую информацию. Я действительно новичок в кодировании. Проблема в том, что когда я делаю apk с помощью Buildozer, на моем телефоне запускается около 10 секунд (5 секунд - заставка, затем 5 секунд черный экран).

Мне кажется, проблема в том, что приложение пытается загрузить каждый экран во время запуска. Есть ли способ заставить приложение загружаться быстрее?

main.py

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty
from kivy.uix.label import Label

class HomeScreen(Screen):
    pass

class ScrollableLabel(ScrollView):
    pass

class FirstScreen(Screen):
    pass


class SecondScreen(Screen):
    pass

...

class FortyScreen(Screen):
    pass

GUI = Builder.load_file("main.kv")


class MainApp(App):

    def build(self):
        return GUI

    def change_screen(self, screen_name):
        screen_manager = self.root.ids['screen_manager']
        screen_manager.current = screen_name



MainApp().run()

main.kv

#:include firstscreen.kv
#:include secondscreen.kv
...
#:include fortyscreen.kv

GridLayout:
    cols: 1
    ScreenManager:
        id: screen_manager
        HomeScreen:
            name: "home_screen"
            id: home_screen
        FirstScreen:
            name: "first_screen"
            id: first_screen
        SecondScreen:
            name: "second_screen"
            id: second_screen
            ...
        FortyScreen:
            name: "normal"
            id: normal

firstscreen.kv

<FirstScreen>:
    GridLayout:
        padding: [15,0,15,15]
        canvas:
            Color:
                rgb: utils.get_color_from_hex("#ffffff")
            Rectangle:
                size: self.size
                pos: self.pos
        cols:1
        ScrollView:
            Label:
                color: 0, 0, 0, 1
                background_color: 255, 255, 255, 1
                size_hint_y: None
                height: self.texture_size[1]
                text_size: self.width, None
                text:"""Really long long string""" * 40
        BoxLayout:
            cols:2
            size_hint_y: None
            Button:
                color: 0, 0, 0, 1
                size_hint_y: None
                background_color: 255, 255, 255, 1
                text:
                    "Menu"
                on_release:
                    app.change_screen("home_screen")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...