package Ġcom . ang cy o . u iv iew . base Ċ Ċ import Ġandroid . support . annotation . Call Super Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . ang cy o . library . utils . L Ċ import Ġcom . ang cy o . u iv iew . R Ċ import Ġcom . ang cy o . u iv iew . container . U ILayout Impl Ċ import Ġcom . ang cy o . u iv iew . container . UI Param Ċ import Ġcom . ang cy o . u iv iew . view . I View Ċ import Ġcom . ang cy o . u iv iew . view . UI I View Impl Ċ import Ġcom . ang cy o . u iv iew . view group . R Tab Layout Ċ Ċ /** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 , æ·± åľ ³ å¸Ĥ çº¢ é¸ Ł ç½ĳç»ľ ç§ĳ æĬĢ èĤ¡ ä»½ æľī éĻĲ åħ¬åı¸ ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ é¡¹çĽ® åĲįç§° ï¼ļ Ċ Ġ* Ġ ç±»çļĦ æııè¿° ï¼ļ éľĢè¦ģ Tab çļĦ çķĮéĿ¢ åŁº ç±» Ċ Ġ* ĠåĪĽå»º äººåĳĺ ï¼ļ Rob i Ċ Ġ* ĠåĪĽå»º æĹ¶éĹ´ ï¼ļ 2 0 1 8 / 0 6 / 2 6 Ġ 1 5 : 2 5 Ċ Ġ* Ġä¿®æĶ¹ äººåĳĺ ï¼ļ Rob i Ċ Ġ* Ġä¿®æĶ¹ æĹ¶éĹ´ ï¼ļ 2 0 1 8 / 0 6 / 2 6 Ġ 1 5 : 2 5 Ċ Ġ* Ġä¿®æĶ¹ å¤ĩ æ³¨ ï¼ļ Ċ Ġ* ĠVersion : Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ abstract Ġclass ĠUI Base Tab View Ġ: ĠUI I View Impl () Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġi Views Ġ= Ġmutable ListOf < I View >() ĊĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġsub U ILayout Impl : ĠU ILayout Impl ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġtab layout : ĠR Tab Layout ĊĠĠĠ Ġoverride Ġfun Ġinf late Base View ( container : ĠFrame Layout , Ġinflater : ĠLayoutInflater ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( getBase Layout Id (), Ġcontainer ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub U ILayout Impl Ġ= ĠfindViewById ( R . id . base _ sub _ layout _ impl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab layout Ġ= ĠfindViewById ( R . id . base _ tab _ layout ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Tab Layout ( tab layout , Ġi Views ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit After Inf late View ( container ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** éĩį åĨĻ æŃ¤ æĸ¹æ³ķ , Ġ èĩªå®ļä¹ī å¸ĥå±Ģ */ ĊĠĠĠ Ġopen Ġfun Ġget Base Layout Id (): ĠInt Ġ= ĠR . layout . base _ u iv iew _ tab _ layout ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġinit After Inf late View ( container : ĠFrame Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent ILayout . set Child ILayout ( sub U ILayout Impl ) ĊĠĠĠĠĠĠĠ Ġset Child ILayout ( sub U ILayout Impl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Create ( root View : ĠView , Ġparam : ĠUI Param ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Create ( root View , Ġparam ) ĊĠĠĠĠĠĠĠ Ġi Views . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . bind Parent ILayout ( m Parent ILayout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** éĩį åĨĻ æŃ¤ æĸ¹æ³ķ , è®¾ç½® çķĮéĿ¢ */ ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġinit Tab Layout ( tab Layout : ĠR Tab Layout Ġ/* æ·»åĬł tab Ġitem */, Ġi Views : ĠMutable List < I View > Ġ/* å¯¹åºĶçļĦ çķĮéĿ¢ */) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* å¦Ĥæŀľ è®¾ç½® äºĨ é»ĺè®¤ ä½įç½® , Ġ è¯· å°Ĩ super è°ĥçĶ¨ æĶ¾åľ¨ Ġ åĲİ éĿ¢ æī§è¡Į */ ĊĠĠĠĠĠĠĠ Ġtab layout . on Tab Layout Listener Ġ= Ġobject Ġ: ĠR Tab Layout . On Tab Layout Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( tab Layout : ĠR Tab Layout , Ġcurrent View : ĠView ?, Ġnext View : ĠView ?, Ġposition Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ UI Base Tab View . on Page Sc rolled ( tab Layout , Ġcurrent View , Ġnext View , Ġposition Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Selector Item View ( tab Layout : ĠR Tab Layout , ĠitemView : ĠView , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ UI Base Tab View . on Selector Item View ( tab Layout , ĠitemView , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Un Selector Item View ( tab Layout : ĠR Tab Layout , ĠitemView : ĠView , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ UI Base Tab View . on Un Selector Item View ( tab Layout , ĠitemView , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Selector Tab ( tab Layout : ĠR Tab Layout , Ġfrom Index : ĠInt , Ġto Index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis @ UI Base Tab View . can Selector Tab ( tab Layout , Ġfrom Index , Ġto Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selector ( tab Layout : ĠR Tab Layout , Ġfrom Index : ĠInt , Ġto Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ UI Base Tab View . on Tab Selector ( tab Layout , Ġfrom Index , Ġto Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re Selector ( tab Layout : ĠR Tab Layout , ĠitemView : ĠView , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ UI Base Tab View . on Tab Re Selector ( tab Layout , ĠitemView , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Page Sc rolled ( tab Layout : ĠR Tab Layout , Ġcurrent View : ĠView ?, Ġnext View : ĠView ?, Ġposition Offset : ĠFloat ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Selector Item View ( tab Layout : ĠR Tab Layout , ĠitemView : ĠView , Ġindex : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Un Selector Item View ( tab Layout : ĠR Tab Layout , ĠitemView : ĠView , Ġindex : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcan Selector Tab ( tab Layout : ĠR Tab Layout , Ġfrom Index : ĠInt , Ġto Index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Tab Selector ( tab Layout : ĠR Tab Layout , Ġfrom Index : ĠInt , Ġto Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( to Index Ġ>= Ġi Views . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . w (" è¯·æ±Ĥ ç¬¬ $ to Index Ġä¸ª é¡µéĿ¢ , Ġ å®ŀéĻħ åıªæľī ${ i Views . size } Ġä¸ª é¡µéĿ¢ .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsub U ILayout Impl . start I View ( i Views [ to Index ]. setIs Right Jump Left ( from Index Ġ> Ġto Index ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Param ( from Index Ġ!= Ġ- 1 Ġ&& Ġfrom Index Ġ!= Ġto Index ). set Async ( false ). set Launch Mode ( UI Param . SINGLE _ TOP )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Tab Re Selector ( tab Layout : ĠR Tab Layout , ĠitemView : ĠView , Ġindex : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} Ċ }