package Ġcom . wz q . sample . ui Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġcom . t br uy elle . rx permissions 2 . Rx Permissions Ċ import Ġcom . wz q . mv vms mart . net . download . Down Load Manager Ċ import Ġcom . wz q . mv vms mart . net . download . Progress CallBack Ċ import Ġcom . wz q . mv vms mart . utils . K Log Ċ import Ġcom . wz q . mv vms mart . utils . Toast Utils Ċ import Ġcom . wz q . sample . BR Ċ import Ġcom . wz q . sample . R Ċ import Ġcom . wz q . sample . base . Base Fragment Ċ import Ġcom . wz q . sample . bean . Form Entity Ċ import Ġcom . wz q . sample . databinding . Fragment Home Binding Ċ import Ġcom . wz q . sample . ui . bottom _ tab . activity . TabBar Activity Ċ import Ġokhttp 3 . ResponseBody Ċ Ċ /** Ċ Ġ* Ġ æĪª æŃ¢ 2 0 1 9 å¹´ 1 2 æľĪ 2 1 æĹ¥ ç´ ¯ è®¡ æĬķ åħ¥ æĹ¶éĹ´ : 4 5 å°ı æĹ¶ Ċ Ġ* Ġæľ¬ é¡¹çĽ® æİ¥åı£ åľ°åĿĢ : Ġ Ġhttps :// www . os china . net / action / apiv 2 / banner ? catalog = 1 Ċ Ġ*/ Ċ class ĠMain Fragment Ġ: ĠBase Fragment < Fragment Home Binding , ĠMain ViewModel >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinit ContentView ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ home ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Variable Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBR . viewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Data () ĊĠĠĠĠĠĠĠ Ġbinding . presenter Ġ= ĠPres enter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View Observable () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init View Observable () ĊĠĠĠĠĠĠĠ Ġ// æ³¨åĨĮ çĽĳåĲ¬ çĽ¸ æľº æĿĥéĻĲ çļĦ è¯·æ±Ĥ ĊĠĠĠĠĠĠĠ ĠviewModel . request Camera Permissions . observe ( this , ĠObserver Ġ{ Ġrequest Camera Permissions () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// æ³¨åĨĮ æĸĩä»¶ ä¸ĭè½½ çļĦ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ ĠviewModel . load Url Event . observe ( this , ĠObserver Ġ{ Ġurl Ġ-> Ġdown File ( url ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å°ģè£ħ å¸ĥå±Ģ ä¸ŃçļĦ çĤ¹åĩ» äºĭä»¶ åĦ¿ ; ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠPres enter Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ç½ĳç»ľ è®¿éĹ® çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġfun Ġnet Work Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Nav Controller ( this @ Main Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ net Work Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Re cycle View å¤ļ å¸ĥå±Ģ ĊĠĠĠĠĠĠĠ Ġfun Ġrv Multi Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Nav Controller ( this @ Main Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ multi Re cycle View Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// è¿Ľåħ¥ TabBar Activity ĊĠĠĠĠĠĠĠ Ġfun Ġstart TabBar Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( TabBar Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ViewPager ç»ĳå®ļ ĊĠĠĠĠĠĠĠ Ġfun Ġview Pager Binding Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short (" çĤ¹åĩ» è·³è½¬ view pager ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Nav Controller ( this @ Main Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ view Pager Group Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// è¡¨åįķ ä¿®æĶ¹ çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġfun Ġform Modify Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ¨¡ æĭŁ ä¸Ģä¸ª ä¿®æĶ¹ çļĦ å®ŀä½ĵ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠForm Entity (" 1 2 3 4 5 6 7 8 "," wz q "," 2 0 2 0 å¹´ 0 8 æľĪ 0 8 æĹ¥ ", true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¼łåħ¥ å®ŀä½ĵ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Bundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Bundle . put Serializable (" entity ", Ġentity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Nav Controller ( this @ Main Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ form Fragment , Ġm Bundle ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// æĿĥéĻĲ çĶ³è¯· ĊĠĠĠĠĠĠĠ Ġfun Ġpermissions Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . request Camera Permissions . call () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åħ¨å±Ģ å¼Ĥå¸¸ æį ķ èİ· ĊĠĠĠĠĠĠĠ Ġfun Ġexception Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¼ ª éĢł ä¸Ģä¸ª å¼Ĥå¸¸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test ". toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// æĸĩä»¶ ä¸ĭè½½ ĊĠĠĠĠĠĠĠ Ġfun Ġfile Down Load Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Long (" ç½ĳç»ľ æ¡Ĩæŀ¶ éĩį æŀĦ ä¸Ń , ä¸ĭè½½ åĬŁèĥ½ æļĤ æĹ¶ åħ³éĹŃ ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Url Event . value Ġ= Ġ" http :// g down . baidu . com / data / wise game / a 2 cd 8 8 2 8 b 2 2 7 b 9 f 9 / ne i hand uan zi _ 6 9 2 . apk " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// room æķ°æį®åºĵ ĊĠĠĠĠĠĠĠ Ġfun Ġroom Sample Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Nav Controller ( this @ Main Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ room Sample Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġæµ ĭ è¯ķ ç½ĳç»ľ æİ¥åı£ ĊĠĠĠĠĠĠĠ Ġfun Ġtest Net Url () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Nav Controller ( this @ Main Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigate ( R . id . action _ home Fragment _ to _ test Net Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè¯·æ±Ĥ çĽ¸ æľº æĿĥéĻĲ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġprivate Ġfun Ġrequest Camera Permissions () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast Utils . show Short (" è¯·æ±Ĥ çĽ¸ æľº æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ æīĵå¼Ģ çĽ¸ æľº æĿĥéĻĲ ĊĠĠĠĠĠĠĠ Ġval Ġrx Permissions Ġ= ĠRx Permissions ( activity !! ) ĊĠĠĠĠĠĠĠ Ġrx Permissions . request ( Manifest . permission . CAMERA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġa Boolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( a Boolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short (" çĽ¸ æľº æĿĥéĻĲ å·²ç»ı æīĵå¼Ģ ï¼Į çĽ´æİ¥ è·³ åħ¥ çĽ¸ æľº ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short (" æĿĥéĻĲ è¢« æĭ Ĵ ç»Ŀ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdown File ( url : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdest File Dir Ġ= Ġactivity !!. application . cacheDir . path ĊĠĠĠĠĠĠĠ ĠK Log . e (" dest File Dir -- $ dest File Dir ") ĊĠĠĠĠĠĠĠ Ġval Ġdest FileName Ġ= ĠSystem . currentTimeMillis (). toString () Ġ+ Ġ". apk " ĊĠĠĠĠĠĠĠ Ġval Ġprogress Dialog Ġ= ĠProgress Dialog ( activity ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog . set Progress Style ( Progress Dialog . STYLE _ HORIZONTAL ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog . setTitle (" æŃ£åľ¨ ä¸ĭè½½ ...") ĊĠĠĠĠĠĠĠ Ġprogress Dialog . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog . show () ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠProgress CallBack æŀĦéĢł æĸ¹æ³ķ ä¸Ń ï¼Į Live EventBus çĽĳåĲ¬ è¿Ľ åº¦ æĶ¹åıĺ ï¼Į è°ĥçĶ¨ Progress CallBack çļĦ progress æĸ¹æ³ķ è®¾ç½® è¿Ľ åº¦ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠDown Load Manager . instance ?. load ( url , Ġobject Ġ: ĠProgress CallBack < ResponseBody ? >( this @ Main Fragment , Ġdest File Dir , Ġdest FileName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log . e (" ä¸ĭè½½ -- onStart ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( response Body : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log . e (" ä¸ĭè½½ -- on Success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short (" æĸĩä»¶ ä¸ĭè½½ å®ĮæĪĲ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠProgress Interceptor æĭ ¦ æĪª response åıĺåĮĸ , å°ģè£ħ åĪ° Progress ResponseBody ä¸Ń ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠProgress ResponseBody ä¸Ń , Ok io è¯»åıĸ response åľ¨ å¤§å°ı , å½ĵåīį èİ·åıĸ åĪ°çļĦ å¤§å°ı , å®ŀ æĹ¶ åıĳéĢģ Live EventBus ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠLive EventBus æĶ¶ åĪ° è¿Ľ åº¦ æĶ¹åıĺ åĢ¼ , å¤ļ æ¬¡ è°ĥçĶ¨ æĽ´æĸ° è¿Ľ åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprogress ( progress : ĠLong , Ġtotal : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log . e (" ä¸ĭè½½ -- progress ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . max Ġ= Ġtotal . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . progress Ġ= Ġprogress . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show Short (" æĸĩä»¶ ä¸ĭè½½ å¤±è´¥ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log . e (" ä¸ĭè½½ -- on Completed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊ Ċ }