package Ġcom . j il . paint f . custom Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . j il . paint f . R Ċ import Ġcom . j il . paint f . adapter . Super Recycler Adapter Ċ Ċ /** Ċ Ġ* Ġ 2 0 2 0 / 8 / 2 4 Ġ 2 2 : 4 5 Ċ Ġ* Ġ@ author ĠJ IL Ċ Ġ**/ Ċ class ĠImage Indicator ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: ĊĠĠĠ ĠRecyclerView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?): this ( context , attrs ,- 1 ) ĊĠĠĠ Ġconstructor ( context : ĠContext ): this ( context , null ) ĊĠĠĠ Ġprivate Ġval ĠHAL F _ DARK _ COLOR Ġ= Color . arg b ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġprivate Ġval ĠIMAGE _ SELECTED _ COLOR Ġ= ĠTheme Util . getColor Primary ( context ) ĊĠĠĠ Ġprivate Ġvar Ġselect Position Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġstate Stop Select Ġ= false ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Pager : ĠView Pager ĊĊĠĠĠ Ġfun Ġbind ViewPager ( view Pager : ĠView Pager ): Image Indicator { ĊĠĠĠĠĠĠĠ Ġthis . view Pager Ġ= view Pager ĊĠĠĠĠĠĠĠ Ġthis . view Pager . add On Page ChangeListener ( object Ġ: ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( select Position Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Manager !!. find View By Position ( select Position ) Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager !!. find View By Position ( select Position ) !!. set BackgroundColor ( HALF _ DARK _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager !!. scrollTo Position ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Manager !!. find View By Position ( position ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager !!. find View By Position ( position ) !!. set BackgroundColor ( IMAGE _ SELECTED _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Stop Select Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Stop Select Ġ&& Ġstate Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager !!. find View By Position ( select Position ) !!. set BackgroundColor ( IMAGE _ SELECTED _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" è®¾ç½® éĢī ä¸Ń é¢ľèī² æĹ¶ åıĳçĶŁ çļĦ éĶĻè¯¯ ", Ġe . message Ġ+ Ġ" çĶ±äºİ è¢« è®¾ç½® çļĦ view ä¸įåı¯ è§ģ ï¼Į view == null ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Stop Select Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Current Item ( current : Int ): Image Indicator { ĊĠĠĠĠĠĠĠ Ġthis . select Position Ġ= current ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbind Pre ViewData ( list : List < String > ){ ĊĠĠĠĠĠĠĠ Ġif ( list . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNullPointerException (" list . isNull OrEmpty ") ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= object Ġ: Super Recycler Adapter < String >( list ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind Data ( holder : ĠSuper V Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setImage ( data [ position ], R . id . preview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( select Position != position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . set BackgroundColor ( HALF _ DARK _ COLOR ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . set BackgroundColor ( IMAGE _ SELECTED _ COLOR ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Layout ( view Type : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . layout . item _ small _ preview _ indicator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , false ) ĊĠĠĠ Ġ} Ċ }