package Ġme . yo keyword . sample . demo _ zhihu . ui . fragment . first . child Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . transition . Fade Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ Ċ import Ġorg . green robot . event bus . Subscribe Ċ Ċ import Ġjava . util . ArrayList Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġme . yo keyword . event bus activity scope . EventBus Activity Scope Ċ import Ġme . yo keyword . fragment ation . Support Fragment Ċ import Ġme . yo keyword . sample . R Ċ import Ġme . yo keyword . sample . demo _ zhihu . MainActivity Ċ import Ġme . yo keyword . sample . demo _ zhihu . adapter . First Home Adapter Ċ import Ġme . yo keyword . sample . demo _ zhihu . entity . Article Ċ import Ġme . yo keyword . sample . demo _ zhihu . event . Tab Selected Event Ċ import Ġme . yo keyword . sample . demo _ zhihu . helper . Detail Transition Ċ import Ġme . yo keyword . sample . demo _ zhihu . listener . On ItemClickListener Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠYo Keyword Ġon Ġ 1 6 / 6 / 5 . Ċ Ġ*/ Ċ class ĠFirst Home Fragment Ġ: ĠSupport Fragment (), ĠSw ipe Refresh Layout . On Refresh Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Toolbar : ĠToolbar ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Re cy : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Refresh Layout : ĠSw ipe Refresh Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Fab : ĠFloating ActionButton ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠFirst Home Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm In At Top Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġm Scroll Total : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġval Ġm Titles Ġ= ĠarrayOf (" Use Ġimag ery Ġto Ġexpress Ġa Ġdistinct ive Ġvoice Ġand Ġexemp lify Ġcre ative Ġex cell ence .", Ġ" An Ġimage Ġthat Ġtells Ġa Ġstory Ġis Ġinf initely Ġmore Ġinteresting Ġand Ġinform ative .", Ġ" The Ġmost Ġpowerful Ġicon ic Ġimages Ġconsist Ġof Ġa Ġfew Ġmeaningful Ġelements , Ġwith Ġminimal Ġdist r actions .", Ġ" Pro per ly Ġcontext ual ized Ġconcepts Ġcon vey Ġyour Ġm Message Ġand Ġbrand Ġmore Ġeffectively .", Ġ" Have Ġan Ġicon ic Ġpoint Ġof Ġfocus Ġin Ġyour Ġimag ery . ĠFocus Ġranges Ġfrom Ġa Ġsingle Ġentity Ġto Ġan Ġover arch ing Ġcomposition .") ĊĊĠĠĠ Ġprivate Ġval Ġm Img Res Ġ= Ġint ArrayOf ( R . drawable . bg _ first , ĠR . drawable . bg _ second , ĠR . drawable . bg _ third , ĠR . drawable . bg _ four th , ĠR . drawable . bg _ f ifth ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . zhihu _ fragment _ first _ home , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠEvent Bus Activity Scope . getDefault ( context ). register ( this ) ĊĠĠĠĠĠĠĠ Ġinit View ( view ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Toolbar Ġ= Ġview . findViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġm Re cy Ġ= Ġview . findViewById ( R . id . re cy ) ĊĠĠĠĠĠĠĠ Ġm Refresh Layout Ġ= Ġview . findViewById ( R . id . refresh _ layout ) ĊĠĠĠĠĠĠĠ Ġm Fab Ġ= Ġview . findViewById ( R . id . fab ) ĊĊĠĠĠĠĠĠĠ Ġm Toolbar !!. setTitle ( R . string . home ) ĊĊĠĠĠĠĠĠĠ Ġm Refresh Layout !!. setColor Scheme Resources ( R . color . color Primary ) ĊĠĠĠĠĠĠĠ Ġm Refresh Layout !!. setOn Refresh Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠFirst Home Adapter ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġm Re cy !!. layout Manager Ġ= Ġmanager ĊĠĠĠĠĠĠĠ Ġm Re cy !!. adapter Ġ= Ġm Adapter ĊĊĠĠĠĠĠĠĠ Ġm Adapter !!. setOn ItemClickListener ( object Ġ: ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( position : ĠInt , Ġview : ĠView , Ġv h : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠFirst Detail Fragment . newInstance ( m Adapter !!. getItem ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¿ĻéĩĮ æĺ¯ ä½¿çĶ¨ Shared Element çļĦ çĶ¨ ä¾ĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠL OL LI POP ( 5 . 0 ) ç³»ç»Ł çļĦ ĠShared Element æĶ¯æĮģ æľī Ġ ç³»ç»Ł BUG ï¼Į Ġ è¿ĻéĩĮ åĪ¤æĸŃ å¤§äºİ Ġ> ĠL OL LI POP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Transition Ġ= ĠF ade () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . enter Transition Ġ= ĠF ade () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . shared Element Return Transition Ġ= ĠDetail Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . shared Element Enter Transition Ġ= ĠDetail Transition () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 5 . 1 . 0 ä»¥ä¸ĭ çļĦ support åĮħ , Material è¿ĩ æ¸ ¡ åĬ¨çĶ» åıªæľī åľ¨ è¿Ľ æłĪ æĹ¶ æľī , è¿ĶåĽŀ æĹ¶ æ²¡æľī ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 5 . 1 . 0 + çļĦ support åĮħ ï¼Į Shared Element æŃ£å¸¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Transaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Shared Element (( vh Ġas ĠFirst Home Adapter . VH ). img , ĠgetString ( R . string . image _ transition )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Shared Element ( vh . tv Title , Ġ" tv ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInit ĠDat as ĊĠĠĠĠĠĠĠ Ġval Ġarticle List Ġ= ĠArrayList < Article >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġi Ġ% Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarticle Ġ= ĠArticle ( m Titles [ index ], Ġm Img Res [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle List . add ( article ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Adapter !!. set Datas ( article List ) ĊĊĠĠĠĠĠĠĠ Ġm Re cy !!. add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Scroll Total Ġ+= Ġdy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm In At Top Ġ= Ġm Scroll Total Ġ<= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ> Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fab !!. hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( dy Ġ< Ġ- 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fab !!. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm Fab !!. setOnClickListener Ġ{ ĠToast . makeText ( context , Ġ" Action ", ĠToast . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Refresh Layout !!. post Delayed ({ Ġm Refresh Layout !!. is Refresh ing Ġ= Ġfalse Ġ}, Ġ 2 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscroll To Top () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Re cy !!. smooth Scroll To Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĢīæĭ© tab äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Subscribe ĊĠĠĠ Ġfun Ġon Tab Selected Event ( event : ĠTab Selected Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . position Ġ!= ĠMainActivity . FIRST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m In At Top ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Refresh Layout !!. is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Refresh () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll To Top () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ ĠEvent Bus Activity Scope . getDefault ( context ). unregister ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFirst Home Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠFirst Home Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ