package Ġcom . sound ai . az ero . azer om obile . ui . activity . launcher Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . GridLayout Animation Controller Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . az ero . sdk . A zero Manager Ċ import Ġcom . az ero . sdk . impl . MediaPlayer . MediaPlayer Handler Ċ import Ġcom . az ero . sdk . util . log Ċ import Ġcom . sound ai . az ero . azer om obile . Ta App Ċ import Ġcom . sound ai . az ero . azer om obile . R Ċ import Ġcom . sound ai . az ero . azer om obile . common . animation . get Animation Set From Left Ċ import Ġcom . sound ai . az ero . azer om obile . common . bean . skill tip . Skill List Tips Response Ċ import Ġcom . sound ai . az ero . azer om obile . common . decoration . Grid Item Decoration Ċ import Ġcom . sound ai . az ero . azer om obile . manager . Activity Lifecycle Manager Ċ import Ġcom . sound ai . az ero . azer om obile . setCurrent Item Ċ import Ġcom . sound ai . az ero . azer om obile . ui . End less Recycler On Scroll Listener Ċ import Ġcom . sound ai . az ero . azer om obile . ui . Load More Wrapper Ċ import Ġcom . sound ai . az ero . azer om obile . ui . Re cycle Adapter Ċ import Ġcom . sound ai . az ero . azer om obile . ui . Setting Ċ import Ġcom . sound ai . az ero . azer om obile . ui . activity . launcher . adapter . Skill List Tips Adapter Ċ import Ġcom . sound ai . az ero . azer om obile . ui . activity . launcher . head . I Head View Ċ import Ġcom . sound ai . az ero . azer om obile . ui . activity . launcher . item . IG rid Item Ċ import Ġcom . sound ai . az ero . azer om obile . ui . activity . launcher . item . Launcher ViewModel Ċ import Ġcom . sound ai . az ero . azer om obile . ui . widget . St agger ed Grid RecyclerView Ċ import Ġkotlinx . coroutines .* Ċ Ċ /** Ċ Ġ* ĠDescription Ġ ï¼ļ Ċ Ġ* ĠCreated Ġby ĠSound AI Ġj ie se an Ġon Ġ 2 0 2 0 - 0 3 - 1 5 . Ċ Ġ*/ Ċ Ċ class ĠList Show Fragment Ġ: ĠFragment (), ĠMedia Player Handler . Audio Player Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcurrent Head View : ĠI Head View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠSt agger ed Grid RecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcv Head Content : ĠCard View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġload More Adapter : ĠLoad More Wrapper ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvp Title : ĠView Pager 2 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvp Tips : ĠView Pager 2 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtip Title Adapter : ĠSkill List Tips Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtip Adapter : ĠSkill List Tips Adapter ĊĠĠĠ Ġprivate Ġvar Ġcurrent Title Index Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcurrent Tip Index Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġloop Job : ĠJob ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġlauncher ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( activity !! ). get ( Launcher ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval ĠDIS MIS S _ EVENT _ TIME Ġ= Ġ 8 Ġ* Ġ 1 0 0 0 ĊĊĠĠĠ Ġprivate Ġval Ġdismiss Timer Ġ= Ġobject Ġ: ĠCount Down Timer ( DIS MIS S _ EVENT _ TIME . to Long (), Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ta App . is Hello Skill ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTa App . is Hello Skill Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠLaunch er Activity ). set Fragment ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġinflater . inflate ( R . layout . fragment _ launcher , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġroot . findViewById ( R . id . rv _ content ) ĊĠĠĠĠĠĠĠ Ġcv Head Content Ġ= Ġroot . findViewById ( R . id . cv _ launcher _ head ) ĊĠĠĠĠĠĠĠ Ġvp Title Ġ= Ġroot . findViewById ( R . id . vp _ title ) ĊĠĠĠĠĠĠĠ Ġvp Tips Ġ= Ġroot . findViewById ( R . id . vp _ tips ) ĊĠĠĠĠĠĠĠ Ġload More Adapter Ġ= ĠLoad More Wrapper ( Re cycle Adapter ( activity !! )) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit ViewModel ( load More Adapter ) ĊĠĠĠĠĠĠĠ Ġvar Ġaudio Player : ĠMedia Player Handler Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA zero Manager . getInstance (). get Handler ( A zero Manager . AUDIO _ HANDLER ) Ġas ĠMedia Player Handler ĊĠĠĠĠĠĠĠ Ġaudio Player . set Audio Player Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid LayoutManager Ġ= ĠGrid LayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . require Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting . LA UNCH ER _ SPAN SIZE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġgrid LayoutManager . span Size Lookup Ġ= Ġobject Ġ: ĠGrid LayoutManager . Span Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġload More Adapter . datas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġ< Ġdata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ position ]. get Span Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting . LA UNCH ER _ SPAN SIZE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġload More Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġgrid LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . BLACK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Scroll Listener ( object Ġ: ĠEnd less Recycler On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Timer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload More Adapter . set Load State ( load More Adapter . LOADING ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġ( m Adapter . item Count Ġ< Ġ 5 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ// Ġæ¨¡ æĭŁ èİ·åıĸ ç½ĳç»ľ æķ°æį® ï¼Į å»¶ æĹ¶ 1 s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠTimer (). schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget More Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . set Load State ( m Adapter . LOADING _ COMPLETE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ}, Ġ 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĺ¾ç¤º åĬłè½½ åĪ° åºķ çļĦ æıĲç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload More Adapter . set Load State ( load More Adapter . LOADING _ END ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġtip Title Adapter Ġ= ĠSkill List Tips Adapter ( activity !! ) ĊĠĠĠĠĠĠĠ Ġtip Adapter Ġ= ĠSkill List Tips Adapter ( activity !! ) ĊĊĠĠĠĠĠĠĠ Ġvp Title . is User Input Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvp Tips . is User Input Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvp Title . adapter Ġ= Ġtip Title Adapter ĊĠĠĠĠĠĠĠ Ġvp Tips . adapter Ġ= Ġtip Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewModel ( load More Adapter : ĠLoad More Wrapper ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlauncher ViewModel . grid Items . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Grid Item Update ( load More Adapter , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlauncher ViewModel . head View . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Head Update ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlauncher ViewModel . skill List Tips . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Tips Data Update ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Tips Data Update ( it : ĠSkill List Tips Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . items . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġtip Titles Ġ= Ġarray ListOf < Pair < String , Boolean >>() ĊĠĠĠĠĠĠĠ Ġval Ġtips Ġ= Ġarray ListOf < Pair < String , Boolean >>() ĊĠĠĠĠĠĠĠ Ġit . items . forEach { item -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtip Titles . add ( Pair ( item . title , false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tips Index Ġin Ġitem . tips . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tips Index Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtips . add ( Pair ( item . tips [ tips Index ], true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtips . add ( Pair ( item . tips [ tips Index ], false )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Tip Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcurrent Title Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( vp Title . is Fake Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . d (" view pager 2 Ġis Fake Dragging ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 8 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp Title . setCurrent Item ( current Title Index , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp Title . setCurrent Item ( current Title Index , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( vp Tips . is Fake Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . d (" view pager 2 Ġis Fake Dragging ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 8 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp Tips . setCurrent Item ( current Tip Index , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp Tips . setCurrent Item ( current Tip Index , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtip Title Adapter . data Ġ= Ġtip Titles ĊĠĠĠĠĠĠĠ Ġtip Adapter . data Ġ= Ġtips ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Grid Item Update ( ĊĠĠĠĠĠĠĠ Ġload More Adapter : ĠLoad More Wrapper , ĊĠĠĠĠĠĠĠ Ġgrid ItemList : ĠMutable List < IG rid Item >? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( grid ItemList . isNull OrEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġold DataList Ġ= Ġload More Adapter . datas ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġgrid ItemList . forEach Ġ{ Ġit . serial Ġ= Ġcount ++ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( old DataList . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimation Controller Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Layout Animation Controller ( get Animation Set From Left ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Controller . row Delay Ġ= Ġ 0 . 3 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Controller . column Delay Ġ= Ġ 0 . 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Animation Ġ= Ġanimation Controller ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More Adapter . datas Ġ= Ġgrid ItemList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . schedule Layout Animation () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Result Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiff Util . calculate Diff ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe cycle Adapter . Diff Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold DataList , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid ItemList ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More Adapter . datas Ġ= Ġgrid ItemList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiff Result . dispatch Updates To ( load More Adapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . scrollTo Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Head Update ( head View : ĠI Head View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Head View ?. release () ĊĠĠĠĠĠĠĠ Ġcurrent Head View Ġ= Ġhead View ĊĠĠĠĠĠĠĠ Ġcv Head Content . removeAll Views () ĊĠĠĠĠĠĠĠ Ġhead View . inflate Head View ( cv Head Content ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠsetUser Visible Hint ( isVisible To User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUser Visible Hint ( isVisible To User ) ĊĠĠĠĠĠĠĠ Ġif Ġ( isVisible To User Ġ&& Ġtip Adapter . data . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloop Job Ġ= Ġcreate Loop Job () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloop Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Loop Job (): ĠJob Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 8 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tip Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title Need Scroll ( current Tip Index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Title Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp Title . setCurrent Item ( current Title Index , Ġ 8 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp Tips . setCurrent Item ( current Tip Index , Ġ 8 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtitle Need Scroll ( nex Tip Index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnext Tip Ġ= Ġtip Adapter . data [ nex Tip Index Ġ% Ġtip Adapter . data . size ] ĊĠĠĠĠĠĠĠ Ġreturn Ġnext Tip . second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Audio Player Stopped () Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . e (" List Fragment Ġon Audio Player Stopped () ") ĊĠĠĠĠĠĠĠ Ġvar Ġtop Activity Ġ= ĠActivity Lifecycle Manager . getInstance (). top Activity ĊĠĠĠĠĠĠĠ Ġif Ġ(( top Activity Ġis ĠLaunch er Activity ) Ġ&& Ġ! (( top Activity Ġas ĠLaunch er Activity ). getCurrent Fragment () Ġis ĠSkill Show Fragment )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Timer . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġplay () Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . e (" List Fragment Ġ Ġplay () ") ĊĠĠĠĠĠĠĠ Ġdismiss Timer . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Audio Player Started () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprepare () Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . e (" List Fragment Ġ Ġprepare () ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . e (" List Fragment Ġ Ġstop () ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpause () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresume () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġseek To ( p 0 : ĠLong ) Ġ{ ĊĠĠĠ Ġ} ĊĊ Ċ }