package Ġcom . good ay apps . tooth y progress Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . good ay apps . tooth y progress . databinding . Activity Main Binding Ċ import Ġcom . good ay apps . widget . T ooth y Progress Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠDemo Player . Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdemo Player Ġby Ġlazy Ġ{ ĠDemo Player ( this ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġis Play Clicked Before Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Fake Loading Run Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġwindow . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoo thy Progress . set Listener ( demo Player . progress Listener ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay . setOnClickListener Ġ{ Ġhandle Play Click () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Test . setOnClickListener Ġ{ Ġopen Test Screen () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Type () Ġ= Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Type Ġ= Ġtoo thy Progress . type ĊĠĠĠĠĠĠĠ Ġif Ġ( current Type Ġ== ĠT ooth y Progress . Type . DE TERMIN ATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoo thy Progress . type Ġ= ĠT ooth y Progress . Type . IN DE TERMIN ATE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoo thy Progress . type Ġ= ĠT ooth y Progress . Type . DE TERMIN ATE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Play Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Fake Loading Run ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Play Clicked Before ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdemo Player . play Something () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Play Clicked Before Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġem ulate Loading () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġem ulate Loading () Ġ= Ġwith ( binding ){ ĊĠĠĠĠĠĠĠ Ġtoo thy Progress . type Ġ= ĠT ooth y Progress . Type . IN DE TERMIN ATE ĊĠĠĠĠĠĠĠ Ġplay . setImage Resource ( R . drawable . ic _ download ) ĊĠĠĠĠĠĠĠ Ġis Fake Loading Run Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdemo Player . play Something () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Play Clicked Before Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fake Loading Run Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Test Screen () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠTest Activity :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Completion () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . play . setImage Resource ( R . drawable . ic _ play _ arrow ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Player Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . play . setImage Resource ( R . drawable . ic _ play _ arrow ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Player Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . play . setImage Resource ( R . drawable . ic _ pause ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Timer And Seek bar ( duration : ĠLong , Ġcurrent Position : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUpdating Ġprogress Ġbar ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġcurrent Position Ġ/ Ġduration . toFloat () ĊĠĠĠĠĠĠĠ Ġbinding . tooth y Progress . set Progress ( progress , Ġfalse ) ĊĠĠĠ Ġ} Ċ }