package Ġcom . xf hy . library . widgets Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . annotation . Attr Res Ċ import Ġandroid . support . v 4 . view . Pager Adapter Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġcom . xf hy . library . R Ċ import Ġcom . xf hy . library . utils . Density Util Ċ import Ġorg . jetbrains . ank o . collections . forEach ByIndex Ċ Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* Ġauthor Ġxf hy Ċ Ġ* Ġcreate Ġat Ġ 1 7 - 1 0 - 3 Ġä¸ĭåįĪ 1 : 1 9 Ċ Ġ* Ġdescription ï¼ļ èĩªå®ļä¹ī çļĦ Banner ĠĠ Ġ å¹¿åĳĬ è½® æĴŃ åĽ¾ Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠéľĢè¦ģ å®ŀçİ° çļĦ ä¸ľè¥¿ ï¼ļ Ċ Ġ* Ġ èĩªåĬ¨ è½® æĴŃ Ċ Ġ* Ġ æĹł éĻĲ å·¦ åĪĴ åı³ åĪĴ Ċ Ġ* Ġ ä¼łåħ¥ å¹¿åĳĬ æĿ¡ çĽ® Ċ Ġ* Ġ åĬłè½½ ç½ĳç»ľ åĽ¾çīĩ ï¼Ī G lide ï¼īï¼Į åĬłè½½ æĸĩåŃĹ Ċ Ġ* Ġ åºķ éĥ¨ å°ı çĻ½ çĤ¹ åı¯ åĪĩæį¢ ï¼Į å¤§å°ı åı¯ æį¢ ï¼Į æķ°éĩı åı¯ åĬ¨æĢģ å¢ŀåĬł Ċ Ġ* Ġ çĽĳåĲ¬ çĤ¹åĩ» äºĭä»¶ Ċ Ġ* Ġè®¾ç½® æ»ĳ åĬ¨ äºĭä»¶ Ċ Ġ* ĠP ager Adapter Ċ Ġ* Ġ è§¦ æĳ ¸ æĹ¶ ä¸įèĥ½ èĩªåĬ¨ æ»ĳ åĬ¨ Ċ Ġ* Ġ å®ŀçİ° ViewPager çĤ¹åĩ» äºĭä»¶ Ċ Ġ* Ġ è®© å¤ĸéĥ¨ åİ» å®ŀçİ° åĽ¾çīĩ åĬłè½½ ï¼Į å®ŀçİ° è§£ èĢ ¦ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ éģĩ åĪ°çļĦ åĿ ĳ ï¼ļ ViewPager æĬĬ è§¦ æĳ ¸ äºĭä»¶ æ¶Īè´¹ äºĨ ï¼Į å¤ĸ å±Ĥ éĩį åĨĻ on Touch Event æ²¡ çĶ¨çļĦ ï¼Į å·²ç»ı è¢« åŃĲ View æ¶Īè´¹ çļĦ äºĭä»¶ ï¼Į æĺ¯ æ²¡ çĶ¨ åĽŀ ä¼ł åĽŀ æĿ¥çļĦ ï¼Į æīĢä»¥ æĪĳ çĽ´æİ¥ åľ¨ dispatch Touch Event () Ċ Ġ* ĠåĪĨ åıĳ äºĭä»¶ çļĦæĹ¶åĢĻ å°± èİ·åıĸ åĪ° è¯¥ äºĭä»¶ ï¼Į å¹¶ åģľæŃ¢ ViewPager çļĦ æ»ļ åĬ¨ ĠĠ Ġå½ĵ çĶ¨æĪ· æĬ ¬ èµ· æīĭ æĮĩ æĹ¶ ï¼Į ç»§ç»Ń æ»ļ åĬ¨ ãĢĤ Ċ Ġ*/ Ċ Ċ class ĠEasy Banner Ġ: ĠFrame Layout , ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¯ı ä¸ª å¹¿åĳĬ æĿ¡ çĽ®çļĦ åĽ¾çīĩ åľ°åĿĢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar ĠimageUrl List : ĠList < String >? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¯ı ä¸ª å¹¿åĳĬ æĿ¡ çĽ®çļĦ æĸĩåŃĹ åĨħå®¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcontent List : ĠList < String >? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĶ¨æĿ¥ çĽ Ľ æĶ¾ å¹¿åĳĬ æĿ¡ çĽ®çļĦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm ViewPager : ĠView Pager ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵåīį å¹¿åĳĬ æĿ¡ çĽ®çļĦ æĸĩåŃĹ åĨħå®¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Content : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åºķ éĥ¨ å°ı åľĨ çĤ¹ æķ´ä¸ª å¸ĥå±Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Point Layout : ĠLinearLayout ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĶ¨æĿ¥ åĬłè½½ banner åĽ¾çīĩ çļĦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar ĠimageView List : ĠMutable List < ImageView >? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°ı åľĨ çĤ¹ ä¸Ĭ ä¸Ģæ¬¡ çļĦ ä½įç½® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġlast Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠçĶ¨æĪ· æĺ¯åĲ¦ æŃ£åľ¨ è§¦ æĳ ¸ banner ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġis Tou ched Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġm Handler Ġ= ĠPol ling Handler () ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġbanner çĤ¹åĩ» äºĭä»¶ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĽ¾çīĩ åĬłè½½ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġimage Loader : ĠImage Loader ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼ĢåĲ¯ è½® è¯¢ ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį è½® æĴŃ åĽ¾ æĺ¯åĲ¦ åľ¨ è½® æĴŃ ĊĠĠĠĠ Ġ* Ġtrue : æŃ£åľ¨ è½® æĴŃ Ġ Ġfalse : æ²¡æľī åľ¨ è½® æĴŃ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Polling Enable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å»¶ æĹ¶çļĦ ä»»åĬ¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġvar Ġdelay Runnable : ĠRunnable Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// çĶ¨æĪ· åľ¨ è§¦ æĳ ¸ æĹ¶ ä¸įèĥ½ è¿Ľè¡Į èĩªåĬ¨ æ»ĳ åĬ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Tou ched ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ViewPager è®¾ç½®ä¸º ä¸ĭ ä¸Ģ é¡¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager ?. currentItem Ġ= Ġ( m ViewPager ?. currentItem Ġ?: Ġ 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Polling Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»§ç»Ń å»¶ è¿ Ł åĪĩæį¢ å¹¿åĳĬ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . post Delayed ( this , ĠB AN NER _ SWITCH _ DELAY _ M ILL IS . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠPol ling Handler Ġ: ĠHandler () ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġ@ Attr Res Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ View ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åĬłè½½ å¸ĥå±Ģ ĠĠ Ġ åŃĲ View ä¸ªæķ° == 0 Ġ Ġ åĪĻ è¿ĺ æ²¡æľī åĬłè½½ å¸ĥå±Ģ ĊĠĠĠĠĠĠĠ Ġif Ġ( child Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . inflate ( context , ĠR . layout . layout _ banner , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager Ġ= ĠfindViewById < View >( R . id . vp _ banner ) Ġas ĠView Pager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content Ġ= ĠfindViewById < View >( R . id . tv _ banner _ content ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Point Layout Ġ= ĠfindViewById < View >( R . id . ll _ banner _ point ) Ġas ĠLinearLayout ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ banner ĊĠĠĠĠ Ġ* Ġ åĽ¾çīĩ åľ°åĿĢ æķ° å¿ħé¡» åĴĮ æĸĩåŃĹ åĨħå®¹ æĿ¡ çĽ® æķ° çĽ¸åĲĮ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠimageUrl List Ġæ¯ı ä¸ª å¹¿åĳĬ æĿ¡ çĽ®çļĦ åĽ¾çīĩ åľ°åĿĢ ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent List Ġ Ġæ¯ı ä¸ª å¹¿åĳĬ æĿ¡ çĽ®çļĦ æĸĩåŃĹ åĨħå®¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit Banner ( imageUrl List : ĠList < String >, Ġcontent List : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . imageUrl List Ġ= ĠimageUrl List ĊĠĠĠĠĠĠĠ Ġthis . content List Ġ= Ġcontent List ĊĠĠĠĠĠĠĠ Ġif Ġ( imageUrl List Ġ== Ġnull Ġ|| Ġcontent List Ġ== Ġnull Ġ|| ĠimageUrl List . size Ġ== Ġ 0 Ġ|| Ġcontent List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" ä¼łåħ¥ åĽ¾çīĩ åľ°åĿĢ æĪĸ å¹¿åĳĬ åĨħå®¹ ä¸įèĥ½ä¸ºç©º ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( imageUrl List . size Ġ!= Ġcontent List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" ä¼łåħ¥ åĽ¾çīĩ åľ°åĿĢ æĪĸ å¹¿åĳĬ åĨħå®¹ æķ°éĩı å¿ħé¡» ä¸Ģèĩ´ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠimageView List Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġvar Ġpoint View : ĠView ĊĊĠĠĠĠĠĠĠ ĠimageUrl List ?. forEach Indexed Ġ{ Ġindex , ĠimageUrl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĬłè½½ åĽ¾çīĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . scale Type Ġ= ĠImageView . Scale Type . CENTER _ C ROP ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®© å¤ĸéĥ¨ åİ» å®ŀçİ° åĽ¾çīĩ åĬłè½½ ï¼Į å®ŀçİ° è§£ èĢ ¦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Loader Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader ?. load Image ( imageView , ĠimageUrl List ?. get ( index ) Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView List ?. add ( imageView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åºķ éĥ¨ çļĦ å°ı çĻ½ çĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint View Ġ= ĠView ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® èĥĮæĻ¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint View . setBackground Resource ( R . drawable . selector _ banner _ point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® å°ı åľĨ çĤ¹ çļĦ å¤§å°ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( Density Util . dip 2 px ( context , ĠPOINT _ DEFAULT _ SIZE ), ĠD ensity Util . dip 2 px ( context , ĠPOINT _ DEFAULT _ SIZE )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĻ¤ ç¬¬ä¸Ģä¸ª ä»¥ å¤ĸ ï¼Į åħ¶ä»ĸ å°ı çĻ½ çĤ¹ éĥ½ éľĢè¦ģ è®¾ç½® å·¦ è¾¹ è·Ŀ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . left Margin Ġ= ĠD ensity Util . dip 2 px ( context , ĠPOINT _ DEFAULT _ SIZE Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoint View . isEnabled Ġ= Ġfalse Ġ// é»ĺè®¤ å°ı çĻ½ çĤ¹ æĺ¯ ä¸įåı¯ çĶ¨çļĦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint View . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Point Layout ?. addView ( point View ) Ġ Ġ// æ·»åĬł åĪ° linear Layout ä¸Ń ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbanner Adapter Ġ= ĠBanner Adapter () ĊĠĠĠĠĠĠĠ Ġm ViewPager ?. adapter Ġ= Ġbanner Adapter ĊĠĠĠĠĠĠĠ Ġ// é¡µéĿ¢ åĪĩæį¢ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠĠĠĠ Ġm ViewPager ?. add On Page ChangeListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// å°Ĩ ViewPager çļĦ èµ· å§ĭ ä½įç½® æĶ¾åľ¨ Ġ Ġ ä¸Ģä¸ª å¾Ī å¤§çļĦ æķ° å¤Ħ ï¼Į éĤ£ä¹Ī ä¸Ģ å¼Ģå§ĭ å°±åı¯ä»¥ å¾Ģ å·¦ åĪĴ åĬ¨ äºĨ ĠĠ Ġ éĤ£ ä¸ªæķ° å¿ħé¡» æĺ¯ imageUrl List . size () çļĦ åĢ į æķ° ĊĠĠĠĠĠĠĠ Ġval Ġremainder Ġ= ĠInteger . MAX _ VALUE Ġ/ Ġ 2 Ġ% Ġ( imageUrl List ?. size Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġm ViewPager ?. currentItem Ġ= ĠInteger . MAX _ VALUE Ġ/ Ġ 2 Ġ- Ġremainder ĊĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ é»ĺè®¤ä¸º ç¬¬ä¸Ģ é¡¹ ĊĠĠĠĠĠĠĠ Ġm Content ?. text Ġ= Ġcontent List ?. get ( 0 ) ĊĠĠĠĠĠĠĠ Ġm Point Layout ?. getChild At ( 0 )?. isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Position Ġ= Ġposition Ġ% Ġ( imageUrl List ?. size Ġ?: Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// å½ĵ é¡µéĿ¢ åĪĩæį¢ æĹ¶ ï¼Į å°Ĩ åºķ éĥ¨ çĻ½ çĤ¹ çļĦ èĥĮæĻ¯ é¢ľèī² æį¢ æİī ĊĠĠĠĠĠĠĠ Ġm Point Layout ?. getChild At ( new Position )?. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Point Layout ?. getChild At ( last Position )?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// æĸĩåŃĹ åĨħå®¹ æĽ¿æį¢ æİī ĊĠĠĠĠĠĠĠ Ġm Content ?. text Ġ= Ġcontent List ?. get ( new Position ) ĊĠĠĠĠĠĠĠ Ġlast Position Ġ= Ġnew Position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( ev . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġis Tou ched Ġ= Ġtrue ĠĠ Ġ// æŃ£åľ¨ è§¦ æĳ ¸ Ġ Ġ æĮī ä¸ĭ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġis Tou ched Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġbanner ä¸Ń ViewPager çļĦ adapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠBanner Adapter Ġ: ĠP ager Adapter () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġè¿ĶåĽŀ èµĦæºĲ ä¸Ģ åħ± æľīçļĦ æĿ¡ çĽ® æķ° ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ å¤į çĶ¨ åĪ¤æĸŃ éĢ»è¾ĳ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis View From Object ( view : ĠView , Ġ` object `: ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview Ġ=== Ġ` object ` ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinstantiate Item ( container : ĠViewGroup , Ġposition : ĠInt ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Position Ġ= Ġposition Ġ% Ġ( imageUrl List ?. size Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠimageView List ?. get ( new Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Item Click ( new Position , Ġ( content List ?. get ( new Position ) Ġ?: Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . addView ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠimageView Ġas ĠAny ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdestroy Item ( container : ĠViewGroup , Ġposition : ĠInt , Ġ` object `: ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . remove View (` object ` Ġas ĠView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® banner çļĦ item çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠOn ItemClickListener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On ItemClickListener ( listener : ĠOn ItemClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( listener Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Item çĽĳåĲ¬ åĻ¨ ä¸įèĥ½ä¸ºç©º ï¼ģ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® åĽ¾çīĩ åĬłè½½ åĻ¨ Ġ Ġ-- å¿ħé¡» è®¾ç½® Ġ åĲ¦åĪĻ åĽ¾çīĩ ä¸įä¼ļ åĬłè½½ åĩºæĿ¥ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġimage Loader ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Image Loader ( image Loader : ĠImage Loader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( image Loader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" åĽ¾çīĩ åĬłè½½ åĻ¨ ä¸įèĥ½ä¸ºç©º ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . image Loader Ġ= Ġimage Loader ĊĠĠĠĠĠĠĠ Ġif Ġ( imageView List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView List ?. forEach Indexed Ġ{ Ġindex , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView List ?. get ( index )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader . load Image ( it , ĠimageUrl List ?. get ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠItem çĤ¹åĩ» çļĦ âĢĿ çĽĳåĲ¬ åĻ¨ âĢľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ çĤ¹åĩ» item æĹ¶çļĦ åĽŀè°ĥ åĩ½æķ° ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġposition Ġå½ĵåīį çĤ¹åĩ» item çļĦ ç´¢å¼ķ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtitle ĠĠĠ Ġå½ĵåīį çĤ¹åĩ» item çļĦ æłĩé¢ĺ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( position : ĠInt , Ġtitle : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲĳ å¤ĸéĥ¨ æļ´ éľ ² çļĦ åĽ¾çīĩ åĬłè½½ åĻ¨ ï¼Į å¤ĸ çķĮ éľĢè¦ģ éĢļè¿ĩ G lide æĪĸèĢħ åħ¶ä»ĸ æĸ¹å¼ı æĿ¥ è¿Ľè¡Į ç½ĳç»ľ åĬłè½½ åĽ¾çīĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠImage Loader Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åĬłè½½ åĽ¾çīĩ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠimageView ĠImageView ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġurl ĠĠĠĠĠĠ Ġ åĽ¾çīĩ åľ°åĿĢ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġload Image ( imageView : ĠImageView , Ġurl : ĠString ?) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼Ģå§ĭ è½® æĴŃ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ä¹ĭåīį å·²ç»ı å¼ĢåĲ¯ è½® æĴŃ Ġ Ġ æĹł éľĢ åĨį å¼ĢåĲ¯ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Polling Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Polling Enable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Handler . post Delayed ( delay Runnable , ĠB AN NER _ SWITCH _ DELAY _ M ILL IS . to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ è½® æĴŃ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Polling Enable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Tou ched Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ç§»éĻ¤ Handler ĠCallback ĠåĴĮ ĠMessage Ġ éĺ² æŃ¢ åĨħåŃĺ æ³ Ħ æ¼ı ĊĠĠĠĠĠĠĠ Ġm Handler . remove Callbacks And Messages ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĩįæĸ° è®¾ç½® æķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠimageUrl List Ġ åĽ¾çīĩ åľ°åĿĢ éĽĨåĲĪ ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent List Ġ Ġ æłĩé¢ĺ éĽĨåĲĪ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset Data ( imageUrl List : ĠList < String >, Ġcontent List : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . imageUrl List Ġ= ĠimageUrl List ĊĠĠĠĠĠĠĠ Ġthis . content List Ġ= Ġcontent List ĊĠĠĠĠĠĠĠ Ġif Ġ( imageUrl List Ġ== Ġnull Ġ|| Ġcontent List Ġ== Ġnull Ġ|| ĠimageUrl List . size Ġ== Ġ 0 Ġ|| Ġcontent List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" ä¼łåħ¥ åĽ¾çīĩ åľ°åĿĢ æĪĸ å¹¿åĳĬ åĨħå®¹ ä¸įèĥ½ä¸ºç©º ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( imageUrl List . size Ġ!= Ġcontent List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" ä¼łåħ¥ åĽ¾çīĩ åľ°åĿĢ æĪĸ å¹¿åĳĬ åĨħå®¹ æķ°éĩı å¿ħé¡» ä¸Ģèĩ´ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åĪ¤æĸŃ æĺ¯åĲ¦ ä¹ĭåīį åľ¨ è½® æĴŃ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Polling Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åģľæŃ¢ ä¹ĭåīį çļĦ è½® æĴŃ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// å¼Ģå§ĭ æĸ°çļĦ è½® æĴŃ ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åºķ éĥ¨ å°ı åľĨ çĤ¹ é»ĺè®¤ å¤§å°ı ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPOINT _ DEFAULT _ SIZE Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åĪĩæį¢ å¹¿åĳĬ çļĦ æĹ¶ éķ¿ Ġ Ġ åįķä½į ï¼ļ ms ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠB AN NER _ SWITCH _ DELAY _ M ILL IS Ġ= Ġ 3 0 0 0 ĊĠĠĠ Ġ} Ċ } Ċ