KivyMD UI and animations are slow and laggy on Android

帅比萌擦擦* 提交于 2019-12-24 11:52:46

问题


I'm working with KivyMD. The UI is so slow. Animations are so slow and often stuck. Even in the Kitchen Sink example. Although it's fine on my Windows and Linux. The problem is after building package for android.

This is exactly my question and the answer given by developer:

https://github.com/HeaTTheatR/KivyMD/issues/77

Unfortunately it didn't help and UI is slow

main.py:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen,ScreenManager
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
from kivy.properties import StringProperty

from kivymd.theming import ThemeManager
from kivymd.utils.cropimage import crop_image
from kivymd.tabs import MDTabs,MDTabsBase
from kivymd.button import MDTextButton

class Scr_Mng(ScreenManager):
    pass

################################ 

class MainPage(Screen):

    def __init__(self, **kwargs):
        super(MainPage, self).__init__(**kwargs)
        Window_width, window_height = Window.size
        background_size = (int(Window_width),int(window_height))
        #crop_image(background_size , "bg.jpg" , "bg_croped.jpg"  )


##############################
class Ask_tab(MDTabsBase):
    profile_pic = StringProperty('assets/bg.jpg')
    profile_name = StringProperty('Sina')
    def new_question(self,question):
        print(question)
##############################
class Answer_tab(MDTabsBase):
    def load_questions(self):
        for x in range(20):
            self.ids.question_items_box.add_widget( Question_items() )

##############################

class Question_items(BoxLayout):
    pass

##############################
class Me_tab(MDTabsBase):
    pass
##############################

class Myapp(App):
    theme_cls = ThemeManager()
    theme_cls.primary_palette = 'DeepPurple'
    title = "Navigation Drawer"
    theme_cls.theme_style = "Light"
    mainpage_title = "Ask/Answer"

    def build(self):
        return Scr_Mng()


Myapp().run()

kv file:

#:import MDToolbar kivymd.toolbar.MDToolbar
#:import MDTabs kivymd.tabs.MDTabs
#:import MDLabel kivymd.label.MDLabel
#:import MDTextField kivymd.textfields.MDTextField
#:import MDTextFieldRound kivymd.textfields.MDTextFieldRound
#:import MDRoundFlatButton kivymd.button.MDRoundFlatButton

#:import MDCard kivymd.cards.MDCard  

<Scr_Mng>:
    MainPage:

<Ask_tab>:
    text: 'Ask'
    FloatLayout:
        size: root.width, root.height
        ScrollView:
            BoxLayout:
                orientation: 'vertical'
                size_hint_y: None
                height: self.minimum_height
                padding: dp(48)
                spacing: dp(15)

                BoxLayout:
                    size_hint: None,None
                    size: root.width*0.2,root.width*0.2
                    pos_hint: {'center_x': .5}
                    canvas.before:
                        Color:
                            rgba: 1,1,1,1
                        Ellipse:
                            pos: self.pos
                            size: self.size
                            source: 'assets/unknown.jpg'

                MDLabel:
                    pos_hint: {'center_x': .5 }
                    size_hint: 1, None
                    height: root.width*0.1
                    text: root.profile_name
                    text_size: self.size
                    halign: 'center'
                    font_style: 'H6'   

                MDTextField:
                    id: question_field
                    pos_hint: {'center_x': .5 }
                    size_hint_x: 0.8
                    multiline: True
                    hint_text: "What question is in your mind?"
                    helper_text: ""
                    helper_text_mode: "persistent"
                    max_text_length: 1000
                MDRoundFlatButton:
                    text: "Post"
                    icon: "login"
                    pos_hint: {'center_x': .5}
                    width: 170
                    on_release: root.new_question(question_field.text)


<Answer_tab>:
    text: 'Answer'
    on_kv_post: root.load_questions()
    FloatLayout:
        size: root.width, root.height
        ScrollView:
            BoxLayout:
                id: question_items_box
                orientation: 'vertical'
                size_hint_y: None
                height: self.minimum_height
                padding: dp(15)
                spacing: dp(15)

<Question_items>:
    orientation: 'vertical'
    spacing: dp(15)
    size_hint: 1,None
    height: 300
    pos_hint: {'center_x': .5}
    BoxLayout:
        canvas.before:
            Color:
                rgba: 0.3,0.5,0.2,1
            Rectangle:
                pos: self.pos
                size: self.size
    MDSeparator:


<Me_tab>:
    text: 'Me'

<MainPage>:
    name: 'main'
    # on_kv_post: root.load_main_tabs() 
    BoxLayout:
        orientation: 'vertical'
        MDToolbar:
            id: toolbar
            title: app.mainpage_title
            md_bg_color: app.theme_cls.primary_color
            background_palette: 'Primary'
            background_hue: '500'
            elevation: 10
            right_action_items:
                [['dots-vertical', lambda x: None]]

        MDTabs:
            id: main_tabs
            Ask_tab:
            Answer_tab:
            Me_tab:

来源:https://stackoverflow.com/questions/57525353/kivymd-ui-and-animations-are-slow-and-laggy-on-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!