How to make a repetitive rotating animation in Kivy?

前端 未结 1 1795
挽巷
挽巷 2021-01-13 08:05

I want to make an animated widget that would rotate the loading spinner image. I\'ve looked into the Animation class and it seems like it can do the job. But I

1条回答
  •  北海茫月
    2021-01-13 08:52

    You can set your angle to 0 inside on_angle method. Here's a slightly modified version:

    from kivy.app import App
    from kivy.lang import Builder
    from kivy.uix.floatlayout import FloatLayout
    from kivy.animation import Animation
    from kivy.properties import NumericProperty
    
    Builder.load_string('''                               
    :
        canvas.before:
            PushMatrix
            Rotate:
                angle: root.angle
                axis: 0, 0, 1
                origin: root.center
        canvas.after:
            PopMatrix
    
    
        Image:
            size_hint: None, None
            size: 100, 100
            pos_hint: {'center_x': 0.5, 'center_y': 0.5}
    ''')
    
    class Loading(FloatLayout):
        angle = NumericProperty(0)
        def __init__(self, **kwargs):
            super(Loading, self).__init__(**kwargs)
            anim = Animation(angle = 360, duration=2) 
            anim += Animation(angle = 360, duration=2)
            anim.repeat = True
            anim.start(self)
    
        def on_angle(self, item, angle):
            if angle == 360:
                item.angle = 0
    
    
    class TestApp(App):
        def build(self):
            return Loading()
    
    TestApp().run()
    

    0 讨论(0)
提交回复
热议问题