package Ġcom . line cy . interest ing . ui . home Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . widget . Swipe Refresh Layout Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . transition . Transition Inflater Ċ import Ġandroid . view . animation . Animation Ċ import Ġcom . line cy . interest ing . BR Ċ import Ġcom . line cy . interest ing . R Ċ import Ġcom . line cy . interest ing . databinding . Fragment Transition View Binding Ċ import Ġcom . line cy . interest ing . ui . Base Fragment Ċ import Ġcom . line cy . interest ing . ui . home . adapter . Transition Adapter Ċ import Ġcom . line cy . interest ing . ui . misc . View Container Ċ import Ġcom . line cy . interest ing . utils . Animation Utils Ċ import Ġcom . line cy . interest ing . view model . Transition ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ transition _ view . re cyclerView Ċ import Ġkotlinx . android . synt hetic . main . fragment _ transition _ view . swipe Layout Ċ import Ġkotlinx . android . synt hetic . main . fragment _ transition _ view . view Container Ċ Ċ /** Ċ Ġ* ĠTransition çĽ¸åħ³ ãĢĤ Ċ Ġ* Ċ Ġ* Ġre cyclerView ĠçļĦ id ä¸İ RecyclerView Fragment Ġ å¸ĥå±Ģ çļĦ re cyclerView ĠçļĦ id ä¸Ģèĩ´ æĹ¶ ï¼Į ä¼ļ åľ¨ åĪĽå»º çļĦæĹ¶åĢĻ çĶŁæĪĲ ä¸Ģæł· çļĦ id Ċ Ġ* Ġ çĦ¶åĲİ åľ¨ bind Data çļĦæĹ¶åĢĻ å¯¼èĩ´ ä¸¤ä¸ª é¡µéĿ¢ æķ°æį® éĥ½ æ²¡æľī åĬŀ æ³ķ æĪĲåĬŁ ï¼Į èĻ½çĦ¶ æī§è¡Į åĪ°äºĨ Bind UI Util ç±»çļĦ å¯¹åºĶ æĸ¹æ³ķ ï¼Į ä½Ĩæĺ¯ é¡µéĿ¢ æķ°æį® æľª æĪĲåĬŁ ãĢĤ Ċ Ġ* Ġ åĬłè½½ ç©º æķ°æį® åĴĮ éĶĻè¯¯ é¡µ èĥ½å¤Ł æĪĲåĬŁ åĬłè½½ ï¼Į çĽ®åīį æľª æī¾åĪ° æł¹ æºĲ éĹ®é¢ĺ ï¼Į åıªæĺ¯ æį¢ äºĨä¸Ģä¸ª id è§£åĨ³ æŃ¤ éĹ®é¢ĺ ãĢĤ Ċ Ġ* Ċ Ġ* Ġ åĽłä¸º è®¾ç½® äºĨ çĽ¸åĲĮ çļĦ id ï¼Į æľĢç»Ī åľ¨ R . id éĩĮéĿ¢ èº« çĶŁæĪĲ çļĦæĺ¯ ä¸Ģä¸ª id ï¼Į åľ¨ åĲĮ ä¸Ģä¸ª å¸ĥå±Ģ ä¸Ń ï¼Į åľ¨ set ContentView åĲİ ï¼Į å½ĵåīį id æĺ¯ åĶ¯ä¸Ģ çļĦ ï¼Į Ċ Ġ* Ġ æīĢä»¥ åľ¨ å½ĵåīį View æłĳ ä¸Ń åı¯ è¡Į ï¼Ľ ä½Ĩæĺ¯ æĪĳ åľ¨ è®¾ç½® çļĦæĹ¶åĢĻ ï¼Į å°Ĩ ä½ľçĶ¨ åŁŁ æĮĩåĲĳ äºĨ activity ?. run {} ï¼Į åľ¨ è¿Ļä¸ª this éĩĮéĿ¢ æĪĳ æĮĩåĲĳ äºĨ Transition View Fragment åĴĮ Ċ Ġ* ĠRecyclerView Fragment çļĦ çĪ¶ activity ï¼Į å¯¼èĩ´ ä»ĸ ä»İ activity å¼Ģå§ĭ éģįåİĨ id ï¼Į èĢĮ RecyclerView Fragment æĺ¯ æľĢ åħĪ æ·»åĬł çļĦ ï¼Į å¯¼èĩ´ åĲİ éĿ¢ Ċ Ġ* Ġèİ·åıĸ åĪ°çļĦ re cyclerView æĺ¯ RecyclerView Fragment éĩĮ éĿ¢çļĦ ï¼Į å°Ĩ å½ĵåīį ç±» è½¬æį¢ æĪĲ kotlin Ġbyte Code åı¯ çŁ¥ è¿Ļ çĤ¹ ãĢĤ Ċ Ġ* ĠFragment Activity Ġvar 2 Ġ= Ġvar 1 0 ; Ċ Ġ* ĠIntr insics . check Expression Value IsNotNull ( var 2 , Ġ" this "); Ċ Ġ* ĠTransition Adapter Ġtransition Adapter Ġ= Ġnew ĠTransition Adapter (( Activity ) var 2 ); Ċ Ġ* ĠRecyclerView Ġvar 5 Ġ= Ġ( RecyclerView ) var 2 . findViewById ( id . re cyclerView ); ĊĊ Ġ* Ġ æīĢä»¥ æĪĳä»¬ æīį å°Ĩ å½ĵåīį é¡µéĿ¢ çļĦ adapter è®¾ç½® åĪ°äºĨ ç¬¬ä¸Ģä¸ª ï¼Į åĲĮæĹ¶ å¯¼èĩ´ å½ĵåīį é¡µéĿ¢ çļĦ adapter æ²¡æľī è®¾ç½® ï¼Į èĢĮ åľ¨ bind UI Util æĸ¹æ³ķ éĩĮéĿ¢ æĺ¯ ï¼Į Ċ Ġ* Ġ å¯¹äºİ ç¬¬ä¸Ģä¸ª é¡µéĿ¢ ï¼Į æĪĳä»¬çļĦ adapter ä¸į åĮ¹éħį è®¾ç½® çļĦ ç±»åŀĭ ï¼Į æīĢä»¥ è·³ è¿ĩ äºĨ æķ°æį® å¡« åħħ ï¼Į èĢĮ ç¬¬äºĮ ä¸ª é¡µéĿ¢ çļĦ adapter == null ï¼Į å¯¼èĩ´ ä¹Ł æ²¡æľī æĪĲåĬŁ Ċ Ġ* Ġ å¡« åħħ æķ°æį® ãĢĤ æīĢä»¥ æ³¨æĦı ä½ľçĶ¨ åŁŁ ï¼ģï¼ģ ï¼ģï¼ģ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author Ġby Ġline cy . Ċ Ġ*/ Ċ class ĠTransition View Fragment Ġ: ĠBase Fragment < Fragment Transition View Binding >(), ĊĠ ĠSw ipe Refresh Layout . On Refresh Listener , ĠView Container . Empty Callback , ĠView Container . Error Callback Ġ{ ĊĊĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠTransition ViewModel ĊĊĠ Ġoverride Ġfun Ġlayout Res Id (): ĠInt Ġ{ ĊĠĠĠ Ġreturn ĠR . layout . fragment _ transition _ view ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Init View ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġswipe Layout . setOn Refresh Listener ( this ) ĊĠĠĠ Ġswipe Layout . setColor Scheme Resources ( R . color . color Primary ) ĊĠĠĠ Ġview Container . set Empty Callback ( this ) ĊĠĠĠ Ġview Container . setError Callback ( this ) ĊĠĠĠ ĠviewModel Ġ= ĠviewModel Provider . get ( Transition ViewModel :: class . java ) ĊĠĠĠ Ġfragment Binding ?. set Variable ( BR . transition ViewModel , ĠviewModel ) ĊĠĠĠ Ġ// æ³¨æĦı ä½ľçĶ¨ åŁŁ ĊĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠ Ġval Ġtransition Adapter Ġ= ĊĠĠĠĠĠĠĠ ĠTransition Adapter ( it ) ĊĠĠĠĠĠ Ġre cyclerView . run Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= Ġtransition Adapter ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġon Refresh () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åĽłä¸º è¿Ļä¸ª é¡µéĿ¢ çĤ¹åĩ» è·³è½¬ æľī å¾Īå¤ļ è¿ĩ æ¸ ¡ åĬ¨çĶ» ï¼Į å¦Ĥæŀľ ä¸į éĩį ç½® çļĦè¯Ŀ ï¼Į åı¯èĥ½ä¼ļ å½±åĵį åħ¶ä»ĸ fragment è·³è½¬ çļĦ åĬ¨çĶ» æķĪæŀľ ĊĠĠ Ġ* Ġ ä¿ĿæĮģ åĴĮ style ä¸Ģèĩ´ ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġactivity ?. window ?. let Ġ{ ĊĠĠĠĠĠ Ġval Ġslide Top Ġ= ĠTransition Inflater . from ( activity ). inflate Transition ( R . transition . slide _ top ) ĊĠĠĠĠĠ Ġval Ġslide Bottom Ġ= ĊĠĠĠĠĠĠĠ ĠTransition Inflater . from ( activity ). inflate Transition ( R . transition . slide _ bottom ) ĊĠĠĠĠĠ Ġit . enter Transition Ġ= Ġslide Top ĊĠĠĠĠĠ Ġit . exit Transition Ġ= Ġslide Bottom ĊĠĠĠĠĠ Ġit . re enter Transition Ġ= Ġslide Top ĊĠĠĠĠĠ Ġit . return Transition Ġ= Ġslide Bottom ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate Animation ( transit : ĠInt , Ġenter : ĠBoolean , Ġnext Anim : ĠInt ): ĠAnimation Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( next Anim ) Ġ{ ĊĠĠĠĠĠ ĠR . anim . rotate _ 3 d _ exit Ġ-> ĠAnimation Utils . create Exit Rotate 3 d Animation () ĊĠĠĠĠĠ Ġ// åĽłä¸º è¿Ľåħ¥ åĬ¨çĶ» ä¸ºäºĨ åĴĮ éĢĢåĩº åĬ¨çĶ» éħį åĲĪ ï¼Į è®¾ äºĨä¸Ģä¸ª å»¶ æĹ¶ ï¼Į æīĢä»¥ ç¬¬ ä¸Ģæ¬¡ è¿Ľåħ¥ çļĦæĹ¶åĢĻ ä¹Ł æľī ä¸ª å»¶ æĹ¶ ï¼Į åıªæĺ¯ åĽłä¸º å¾Ī çŁŃ ï¼Į çĽ®åīį å¿½ çķ¥ ĊĠĠĠĠĠ ĠR . anim . rotate _ 3 d _ enter Ġ-> ĠAnimation Utils . create Enter Rotate 3 d Animation () ĊĠĠĠĠĠ Ġelse Ġ-> Ġsuper . onCreate Animation ( transit , Ġenter , Ġnext Anim ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠ ĠviewModel . refresh Data () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Show Empty () Ġ{ ĊĠĠĠ Ġon Refresh () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Show Error () Ġ{ ĊĠĠĠ Ġon Refresh () ĊĠ Ġ} Ċ }