package Ġcom . synt hes ist ool . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġcom . alibaba . android . ar outer . facade . annotation . Route Ċ import Ġcom . common . tools . Log Util Ċ import Ġcom . service . bean . Main Page Param Ċ import Ġcom . service . bean . Main Page Param . Main Bottom Param Ċ import Ġcom . synt hes ist ool . R Ċ import Ġcom . synt hes ist ool . adapter . Main Act View Page Adapter Ċ import Ġcom . synt hes ist ool . component . D agger Main Drag ger Component Ċ import Ġcom . synt hes ist ool . fragment . Fragment Factory Ċ import Ġcom . synt hes ist ool . module . Main Drag ger Module Ċ import Ġcom . synt hes ist ool . presenter . Main Drag ger Pres en eter Ċ import Ġcom . synt hes ist ool . view . Main Drag ger View Ċ import Ġcom . ui . adapter . Main Bottom Adapter . On Choose Listener Ċ import Ġcom . ui . base . Base Activity Ċ import Ġcom . ui . base . Base Main Page Fragment Ċ import Ġcom . ui . widget . Custom View Two Ċ import Ġkotlinx . android . synt hetic . main . act _ main .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ @ Suppress (" Spell Checking Inspection ") Ċ @ Route ( path Ġ= Ġ"/ App / MainActivity ") Ċ class ĠMainActivity Ġ: ĠBase Activity (), ĠMain Drag ger View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġm Main Drag ger Pres en eter : ĠMain Drag ger Pres en eter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Main Bottom List : ĠArrayList < Main Bottom Param > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġvar Ġmain Fragments : ĠArrayList < Base Main Page Fragment > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġvar Ġm Main Act View Page Adapter : ĠMain Act View Page Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinit View ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . act _ main ) ĊĊĠĠĠĠĠĠĠ ĠsetTitle Visible ( View . GONE ) ĊĊĠĠĠĠĠĠĠ ĠD agger Main Drag ger Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. main Drag ger Module ( Main Drag ger Module ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĊĠĠĠĠĠĠĠ ĠFragment Factory . clear Fragments () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġshow Loading View () ĊĊĠĠĠĠĠĠĠ Ġm Main Drag ger Pres en eter ?. load Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Event () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Reload Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh View ( response : ĠMain Page Param ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġhide Loading View () ĊĊĠĠĠĠĠĠĠ Ġval Ġmain Fragment Params Ġ= Ġresponse . main Fragment Params ĊĊĠĠĠĠĠĠĠ Ġmain Fragments . clear () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( position Ġin Ġmain Fragment Params . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Fragments . add ( Fragment Factory . get Fragment ( main Fragment Params [ position ]. fragments Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Main View Page ( main Fragments ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmain Bottom s Ġ= Ġresponse . main Bottom s ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmain Bottom s . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠMain Page Param (). Main Bottom Param ( main Bottom s [ i ]. name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Main Bottom Icon Id ( main Fragment Params [ i ]. fragments Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Main Bottom Default Icon Id ( main Fragment Params [ i ]. fragments Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Bottom s [ i ]. isSelected ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( main Bottom s [ i ]. isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp _ content ?. currentItem Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Fragment Page Se leted ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Main Bottom List . add ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġb nv _ bottom _ navigation . setData ( m Main Bottom List ) ĊĠĠĠĠĠĠĠ Ġb nv _ bottom _ navigation . setOn Choose Listener ( object Ġ: ĠOn Choose Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Choose ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp _ content ?. currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Fragment Page Se leted ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Fragment Page Se leted ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Util . i (" on Fragment Page Se leted $ position ") ĊĊĠĠĠĠĠĠĠ Ġmain Fragments [ position ]. on Fragment Se leted () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Main View Page ( main Main Page Fragments : ĠArrayList < Base Main Page Fragment >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġm Main Act View Page Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Main Act View Page Adapter Ġ= ĠMain Act View Page Adapter ( support FragmentManager , Ġmain Main Page Fragments ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp _ content ?. adapter Ġ= Ġm Main Act View Page Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp _ content ?. off screen Page Limit Ġ= Ġmain Main Page Fragments . size Ġ- Ġ 1 Ġ// åĲ¯åĬ¨ å°± åĪĿå§ĭåĮĸ æīĢ éľĢ çļĦ Fragment , åħ·ä½ĵ Fragment çļĦæķ°æį® åĪĿå§ĭåĮĸ åı¯ä»¥åľ¨ on Fragment Se leted åĽŀè°ĥ æĹ¶ è¿Ľè¡Į ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvp _ content ?. add On Page ChangeListener ( object Ġ: Ġandroidx . view pager . widget . ViewPager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( p 0 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( p 0 : ĠInt , Ġp 1 : ĠFloat , Ġp 2 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( p 0 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Main Bottom List . indices . forEach Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġp 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Main Bottom List [ i ]. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Fragment Page Se leted ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Main Bottom List [ i ]. isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb nv _ bottom _ navigation . refresh Ma ain Bottom ( m Main Bottom List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * Ġ åĽ¾çīĩ å½ĵçĦ¶ åı¯ä»¥ çĶ¨ ç½ĳç»ľ åĽ¾çīĩ , ä½Ĩ ç½ĳç»ľ åĽ¾çīĩ åĬłè½½ åıĹ ç½ĳç»ľ å½±åĵį , è¿ĻéĩĮ ä»ħ ä½ľä¸º ä½¿çĶ¨ æ¡Ī ä¾ĭ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfind Main Bottom Icon Id ( id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ one ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ two ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ three ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ default ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * Ġ åĽ¾çīĩ å½ĵçĦ¶ åı¯ä»¥ çĶ¨ ç½ĳç»ľ åĽ¾çīĩ , ä½Ĩ ç½ĳç»ľ åĽ¾çīĩ åĬłè½½ åıĹ ç½ĳç»ľ å½±åĵį , è¿ĻéĩĮ ä»ħ ä½ľä¸º ä½¿çĶ¨ æ¡Ī ä¾ĭ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfind Main Bottom Default Icon Id ( id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ default ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ default ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ default ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠR . drawable . ic _ star _ black _ 1 4 4 dp _ default ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading View () ĊĊĠĠĠĠĠĠĠ Ġshow Error ContentView () ĊĠĠĠ Ġ} Ċ } Ċ