package Ġcom . letter . days . fragment Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . start Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroidx . annotation . Float Range Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . letter . days . databinding . Fragment Ann ivers ary Binding Ċ import Ġcom . letter . days . utils .* Ċ import Ġcom . letter . days . view model . Ann ivers ary ViewModel Ċ import Ġjava . lang . Exception Ċ Ċ private Ġconst Ġval ĠAN NI _ POSITION = Ġ" ann i _ position " Ċ Ċ /** Ċ Ġ* Ġ çºª å¿µ æĹ¥ Fragment Ċ Ġ* Ġ@ property Ġan ni Position ĠInt Ġ çºª å¿µ æĹ¥ ç´¢å¼ķ Ċ Ġ* Ġ@ property Ġbinding ĠFragment Ann ivers ary Binding Ġ è§ĨåĽ¾ ç»ĳå®ļ Ċ Ġ* Ġ@ property Ġmodel ĠAnn ivers ary ViewModel Ġview Ġmodel Ċ Ġ* Ċ Ġ* Ġ@ author ĠLetter ( never mind zz t @ gmail . com ) Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠAnn ivers ary Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġan ni Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Ann ivers ary Binding ĊĠĠĠ Ġprivate Ġval Ġmodel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( activity Ġas ĠAppCompatActivity ). get ( Ann ivers ary ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan ni Position Ġ= Ġit . getInt ( AN NI _ POSITION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Ann ivers ary Binding . inflate ( in flater ) ĊĠĠĠĠĠĠĠ Ġinit Binding () ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ann ivers ary Ġ= Ġmodel . days List . value ?. get ( ann i Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Text . text Ġ= Ġmodel . days List . value ?. get ( ann i Position )?. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ 3 6 5 Ġ- Ġ( getNext Time ( model . days List . value ?. get ( ann i Position )) Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator . of Int ( day Text , Ġ" progress ", Ġ 0 , Ġprogress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday Text . stroke Color Ġ= Ġmodel . days List . value ?. get ( ann i Position )?. color Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday Text . text Ġ= Ġmodel . days List . value ?. get ( ann i Position )?. get Day Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Text . text Ġ= Ġmodel . days List . value ?. get ( ann i Position )?. getDate String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Text . text Ġ= Ġmodel . days List . value ?. get ( ann i Position )?. getType Text () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĪ·æĸ° è¿Ľ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfresh Progress () Ġ{ ĊĠĠĠĠĠĠĠ ĠObject Animator . of Int ( binding . day Text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" progress ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 6 5 Ġ- Ġ( getNext Time ( model . days List . value ?. get ( ann i Position )) Ġ?: Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® è¿Ľ åº¦ ĊĠĠĠĠ Ġ* Ġ@ param Ġprocess ĠFloat Ġ è¿Ľ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Process (@ Float Range ( from Ġ= Ġ 0 . 0 , Ġto Ġ= Ġ 1 . 0 ) Ġprocess : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ 3 6 5 Ġ- Ġ( getNext Time ( model . days List . value ?. get ( ann i Position )) Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . day Text . progress Ġ= Ġ( value . toFloat () Ġ* Ġprocess ). toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æĸ° å®ŀä¾ĭ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġan ni Position ĠInt Ġ çºª å¿µ æĹ¥ ç´¢å¼ķ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠAnn ivers ary Fragment ĠAnn ivers ary Fragment ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( ann i Position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnn ivers ary Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( AN NI _ POSITION , Ġan ni Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ