acid-drop

- Hacking the planet from a LilyGo T-Deck using custom firmware
git clone git://git.acid.vegas/acid-drop.git
Log | Files | Refs | Archive | README | LICENSE

lv_example_anim_timeline_1.py (5049B)

      1 class LV_ExampleAnimTimeline_1(object):
      2 
      3     def __init__(self):
      4         self.obj_width = 120
      5         self.obj_height = 150
      6         #
      7         # Create an animation timeline
      8         #
      9 
     10         self.par = lv.scr_act()
     11         self.par.set_flex_flow(lv.FLEX_FLOW.ROW)
     12         self.par.set_flex_align(lv.FLEX_ALIGN.SPACE_AROUND, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER)
     13 
     14         self.btn_run = lv.btn(self.par)
     15         self.btn_run.add_event_cb(self.btn_run_event_handler, lv.EVENT.VALUE_CHANGED, None)
     16         self.btn_run.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
     17         self.btn_run.add_flag(lv.obj.FLAG.CHECKABLE)
     18         self.btn_run.align(lv.ALIGN.TOP_MID, -50, 20)
     19 
     20         self.label_run = lv.label(self.btn_run)
     21         self.label_run.set_text("Run")
     22         self.label_run.center()
     23 
     24         self.btn_del = lv.btn(self.par)
     25         self.btn_del.add_event_cb(self.btn_del_event_handler, lv.EVENT.CLICKED, None)
     26         self.btn_del.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
     27         self.btn_del.align(lv.ALIGN.TOP_MID, 50, 20)
     28 
     29         self.label_del = lv.label(self.btn_del)
     30         self.label_del.set_text("Stop")
     31         self.label_del.center()
     32 
     33         self.slider = lv.slider(self.par)
     34         self.slider.add_event_cb(self.slider_prg_event_handler, lv.EVENT.VALUE_CHANGED, None)
     35         self.slider.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
     36         self.slider.align(lv.ALIGN.BOTTOM_RIGHT, -20, -20)
     37         self.slider.set_range(0, 65535)
     38 
     39         self.obj1 = lv.obj(self.par)
     40         self.obj1.set_size(self.obj_width, self.obj_height)
     41 
     42         self.obj2 = lv.obj(self.par)
     43         self.obj2.set_size(self.obj_width, self.obj_height)
     44 
     45         self.obj3 = lv.obj(self.par)
     46         self.obj3.set_size(self.obj_width, self.obj_height)
     47 
     48         self.anim_timeline = None
     49 
     50     def set_width(self,obj, v):
     51         obj.set_width(v)
     52 
     53     def set_height(self,obj, v):
     54         obj.set_height(v)
     55 
     56     def anim_timeline_create(self):
     57         # obj1
     58         self.a1 = lv.anim_t()
     59         self.a1.init()
     60         self.a1.set_values(0, self.obj_width)
     61         self.a1.set_early_apply(False)
     62         self.a1.set_custom_exec_cb(lambda a,v: self.set_width(self.obj1,v))
     63         self.a1.set_path_cb(lv.anim_t.path_overshoot)
     64         self.a1.set_time(300)
     65 
     66         self.a2 = lv.anim_t()
     67         self.a2.init()
     68         self.a2.set_values(0, self.obj_height)
     69         self.a2.set_early_apply(False)
     70         self.a2.set_custom_exec_cb(lambda a,v: self.set_height(self.obj1,v))
     71         self.a2.set_path_cb(lv.anim_t.path_ease_out)
     72         self.a2.set_time(300)
     73 
     74         # obj2
     75         self.a3=lv.anim_t()
     76         self.a3.init()
     77         self.a3.set_values(0, self.obj_width)
     78         self.a3.set_early_apply(False)
     79         self.a3.set_custom_exec_cb(lambda a,v: self.set_width(self.obj2,v))
     80         self.a3.set_path_cb(lv.anim_t.path_overshoot)
     81         self.a3.set_time(300)
     82 
     83         self.a4 = lv.anim_t()
     84         self.a4.init()
     85         self.a4.set_values(0, self.obj_height)
     86         self.a4.set_early_apply(False)
     87         self.a4.set_custom_exec_cb(lambda a,v: self.set_height(self.obj2,v))
     88         self.a4.set_path_cb(lv.anim_t.path_ease_out)
     89         self.a4.set_time(300)
     90 
     91         # obj3
     92         self.a5 = lv.anim_t()
     93         self.a5.init()
     94         self.a5.set_values(0, self.obj_width)
     95         self.a5.set_early_apply(False)
     96         self.a5.set_custom_exec_cb(lambda a,v: self.set_width(self.obj3,v))
     97         self.a5.set_path_cb(lv.anim_t.path_overshoot)
     98         self.a5.set_time(300)
     99 
    100         self.a6 = lv.anim_t()
    101         self.a6.init()
    102         self.a6.set_values(0, self.obj_height)
    103         self.a6.set_early_apply(False)
    104         self.a6.set_custom_exec_cb(lambda a,v: self.set_height(self.obj3,v))
    105         self.a6.set_path_cb(lv.anim_t.path_ease_out)
    106         self.a6.set_time(300)
    107 
    108         # Create anim timeline
    109         print("Create new anim_timeline")
    110         self.anim_timeline = lv.anim_timeline_create()
    111         lv.anim_timeline_add(self.anim_timeline, 0, self.a1)
    112         lv.anim_timeline_add(self.anim_timeline, 0, self.a2)
    113         lv.anim_timeline_add(self.anim_timeline, 200, self.a3)
    114         lv.anim_timeline_add(self.anim_timeline, 200, self.a4)
    115         lv.anim_timeline_add(self.anim_timeline, 400, self.a5)
    116         lv.anim_timeline_add(self.anim_timeline, 400, self.a6)
    117 
    118     def slider_prg_event_handler(self,e):
    119         slider = e.get_target()
    120 
    121         if  not self.anim_timeline:
    122             self.anim_timeline_create()
    123 
    124         progress = slider.get_value()
    125         lv.anim_timeline_set_progress(self.anim_timeline, progress)
    126 
    127 
    128     def btn_run_event_handler(self,e):
    129         btn = e.get_target()
    130         if not self.anim_timeline:
    131             self.anim_timeline_create()
    132 
    133         reverse = btn.has_state(lv.STATE.CHECKED)
    134         lv.anim_timeline_set_reverse(self.anim_timeline,reverse)
    135         lv.anim_timeline_start(self.anim_timeline)
    136 
    137     def btn_del_event_handler(self,e):
    138         if self.anim_timeline:
    139             lv.anim_timeline_del(self.anim_timeline)
    140         self.anim_timeline = None
    141 
    142 
    143 lv_example_anim_timeline_1 = LV_ExampleAnimTimeline_1()