package Ġcom . sh enh ua . libs . ne uro guide . core Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . sh enh ua . libs . ne uro guide . listener . On Guide Changed Listener Ċ import Ġcom . sh enh ua . libs . ne uro guide . listener . On Page Changed Listener ĊĊ Ċ /** Ċ Ġ* Ġ å¼ķ å¯¼ é¡µ æİ§åĪ¶åĻ¨ ï¼Į æİ§åĪ¶ å¼ķ å¯¼ å±Ĥ çļĦ æĺ¾ç¤º ä¸İ åĽŀ éĢĢ ï¼Į ä¸ĭ ä¸ĢæŃ¥ çŃī Ċ Ġ* ĠCreated Ġby Ġsh enh ua Ġon Ġ 2 0 1 8 / 7 / 1 8 . Ċ Ġ* Ġ@ author Ġsh enh ua Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠEmail Ġsh en hu an et @ 1 2 6 . com Ċ Ġ*/ Ċ class ĠPage Controller ( builder : ĠBuilder ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġactivity : ĠActivity ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfragment : ĠFragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġv 4 Fragment : Ġandroid . support . v 4 . app . Fragment ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġalways Show : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġanchor : ĠView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġguide Pages : ĠArrayList < Guide Page > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġon Guide Changed Listener : ĠOn Guide Changed Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Page Changed Listener : ĠOn Page Changed Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º å¼ķ å¯¼ é¡µ çļĦ çĪ¶ å®¹åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Parent View : ĠFrame Layout ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä½¿çĶ¨ Ġanchor ĠæĹ¶ è®°å½ķ çļĦ åľ¨ çĪ¶ å¸ĥå±Ģ çļĦ ä½įç½® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar ĠindexOf Child Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar ĠmCurrent Page Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠmCurrent Guide View : ĠGuide View ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis Show Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġbuilder . activity ĊĠĠĠĠĠĠĠ Ġthis . fragment Ġ= Ġbuilder . fragment ĊĠĠĠĠĠĠĠ Ġthis . v 4 Fragment Ġ= Ġbuilder . v 4 Fragment ĊĊĠĠĠĠĠĠĠ Ġthis . always Show Ġ= Ġbuilder . always Show ĊĠĠĠĠĠĠĠ Ġthis . anchor Ġ= Ġbuilder . anchor ĊĊĠĠĠĠĠĠĠ Ġthis . guide Pages Ġ= Ġbuilder . guide Pages ĊĠĠĠĠĠĠĠ Ġthis . on Guide Changed Listener Ġ= Ġbuilder . on Guide Changed Listener ĊĠĠĠĠĠĠĠ Ġthis . on Page Changed Listener Ġ= Ġbuilder . on Page Changed Listener ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfragment ?. activity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġv 4 Fragment ?. activity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" activity Ġis Ġnull , Ġplease Ġmake Ġsure Ġthat Ġfragment Ġis Ġshowing Ġwhen Ġcall ĠNe uro Guide .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® éĶ ļ çĤ¹ view ä¸ºç©º æĹ¶ ï¼Į é»ĺè®¤ åıĸ ç³»ç»Ł decor View ĊĠĠĠĠĠĠĠ Ġif Ġ( anchor Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= Ġactivity ?. findViewById ( android . R . id . content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( anchor Ġis ĠFrame Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Parent View Ġ= Ġanchor Ġas ĠFrame Layout ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġframe Layout Ġ= ĠFrame Layout ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġanchor ?. parent Ġas ĠViewGroup ĊĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Child Ġ= Ġparent . indexOf Child ( anchor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . remove View ( anchor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indexOf Child Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . addView ( frame Layout , ĠindexOf Child , Ġanchor !!. layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . addView ( parent , Ġanchor !!. layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Layout . addView ( anchor , Ġlayout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Parent View Ġ= Ġframe Layout ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Parent View . is Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Parent View . is Focus able In Touch Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Parent View . setOn Key Listener Ġ{ Ġ_, ĠkeyCode , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Show Ġ&& ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ BACK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( guide Pages . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠmCurrent Page Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġon Guide Changed Listener ?. on Guide Show ( this ) ĊĠĠĠĠĠĠĠ Ġis Show Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġshow Guide Page () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Guide Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguide Page Ġ= Ġguide Pages [ m Current Page ] ĊĠĠĠĠĠĠĠ Ġval Ġguide View Ġ= ĠGuide View ( activity !!. application Context ) ĊĠĠĠĠĠĠĠ Ġguide View . set Guide Page ( guide Page ) ĊĠĠĠĠĠĠĠ Ġguide View . set Page Controller ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Current Guide View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Parent View . remove View ( m Current Guide View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠmCurrent Guide View Ġ= Ġguide View ĊĠĠĠĠĠĠĠ Ġm Parent View . addView ( guide View , ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT )) ĊĊĠĠĠĠĠĠĠ Ġon Page Changed Listener ?. on Page Changed ( m Current Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸Ĭ ä¸Ģ é¡µ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpreview Page () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸ĭ ä¸Ģ é¡µ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnext Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Current Page Ġ< Ġguide Pages . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Page ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Guide Page () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġm Parent View . child Count Ġ- Ġ 1 Ġdown To Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġm Parent View . getChild At ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ!= Ġnull Ġ&& Ġview Ġis ĠGuide View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Parent View . remove View ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Guide Changed Listener ?. on Guide Dismiss ( this ) ĊĠĠĠĠĠĠĠ Ġis Show Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ }