package Ġcom . peng . g xp base everything . view . activity . mv vm Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . Menu Res Ċ import Ġandroidx . annotation . Style Res Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . core . view . children Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġcom . gy f . imm ersion bar . Imm ersion Bar Ċ import Ġcom . peng . g xp base everything . R Ċ import Ġkotlinx . android . synt hetic . main . g xp _ layout _ toolbar .* Ċ import Ġkotlinx . android . synt hetic . main . mv vm _ g xp _ activity _ drawer .* Ċ import Ġkotlinx . android . synt hetic . main . mv vm _ g xp _ activity _ toolbar .* Ċ Ċ abstract Ġclass ĠG XP Toolbar Drawer Activity < T Ġ: ĠView Data Binding , ĠSTART _ DRAW ER Ġ: ĠView Data Binding , ĠEND _ DRAW ER Ġ: ĠView Data Binding > Ġ: ĊĠĠĠ ĠG XP Drawer Activity < T , ĠSTART _ DRAW ER , ĠEND _ DRAW ER >() Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĶ¨æĿ¥ å®ŀçİ° toolbar çļĦ å·¦ ä¾§ åĽ¾ æłĩ åĪĩæį¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġtoggle : ĠAction Bar Drawer Toggle ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĨħå®¹ éĥ¨åĪĨ çļĦ æł¹ å¸ĥå±Ģ ï¼Į ä¿ĿåŃĺ getContent Root Layout Id () æĭ¿ åĪ°çļĦ å¸ĥå±Ģ View ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Content Root View : ĠView ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĨħå®¹ éĥ¨åĪĨ çļĦ åŃĲ å¸ĥå±Ģ ï¼Į ä¿ĿåŃĺ getContent Layout Id () æĭ¿ åĪ°çļĦ å¸ĥå±Ģ View ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm ContentView : ĠView ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĨħå®¹ éĥ¨åĪĨ çļĦ æł¹ å¸ĥå±Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfinal Ġoverride Ġfun ĠgetContent Root Layout Id (): ĠInt Ġ= ĠR . layout . mv vm _ g xp _ activity _ toolbar ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ åĨħå®¹ éĥ¨åĪĨ View åĴĮ Data Binding ï¼Į æ·»åĬł å¸ĥå±Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġinit Data Binding () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( getRoot Layout Id ()) ĊĠĠĠĠĠĠĠ Ġm Content Root View Ġ= ĠLayoutInflater . from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( getContent Root Layout Id (), Ġcom _ peng _ base ever thing _ drawer Layout , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! com _ peng _ base ever thing _ drawer Layout . children . contains ( m Content Root View )) Ġ{ Ġ// ç¡® ä¿Ŀ æ¨ ª ç« ĸ å±ı åĪĩæį¢ æĹ¶ åıª ä¼ļ æĸ°å¢ŀ ä¸Ģä¸ª åĨħå®¹ å¸ĥå±Ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ drawer Layout . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Content Root View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä»İ çĶ¨æĪ· è®¾ç½® çļĦåĨħå®¹ å¸ĥå±Ģ è§£æŀĲ View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ContentView Ġ= ĠLayoutInflater . from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( getContent Layout Id (), Ġcom _ peng _ base ever thing _ root _ view , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ root _ view . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ContentView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠData Binding Util . bind < T >( m ContentView ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . lifecycle Owner Ġ= Ġthis ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® action Bar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Bar Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Support ActionBar ( action Bar ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĲĮæŃ¥ action bar çļĦ åĽ¾ æłĩ åĴĮ drawer Layout çļĦ æİ¨ æĭī çĬ¶æĢģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ drawer Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . navigation _ drawer _ open , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . navigation _ drawer _ close ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ drawer Layout . add Drawer Listener ( toggle !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle !!. sync State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Content Layout In fl ated () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ------------------- çĶŁåĳ½ åĳ¨æľŁ ---------------------- */ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® åĨħå®¹ éĥ¨åĪĨ æĺ¯åĲ¦ è¦ģ å»¶ ä¼ ¸ åĪ° StatusBar åĴĮ ActionBar ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ åĨħå®¹ ä¸į å»¶ ä¼ ¸ åĪ° action Bar ä»¥åıĬ status Bar ï¼Į åĪĻ åºĶ è®¾ç½® margin Top ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Content Extend To StatusBar ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= Ġcom _ peng _ base ever thing _ root _ view . getChild At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġcontent View . layout Params Ġas ĠFrame Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . top Margin Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImm ersion Bar . getStatus Bar Height ( this ) Ġ+ ĠImm ersion Bar . get ActionBar Height ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Toolbar () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** Ġ------------------- æĮī éľĢæ±Ĥ å®ŀçİ° çĽ¸åħ³ åĪĿå§ĭåĮĸ æĸ¹æ³ķ ---------------------- */ ĊĠĠĠ Ġprotected Ġabstract Ġfun ĠgetContent Layout Id (): ĠInt ĊĊĠĠĠ Ġ/** åĨħå®¹ éĥ¨åĪĨ æĺ¯åĲ¦ å»¶ ä¼ ¸ åĪ° status Bar ï¼Į true ï¼Į ä¸įéľĢè¦ģ åģļ ä»»ä½ķ æĵįä½ľ ï¼Į false ï¼Į éľĢè¦ģ ä¸º æł¹ å¸ĥå±Ģ è®¾ç½® padding æĪĸ margin Top */ ĊĠĠĠ Ġopen Ġfun Ġis Content Extend To StatusBar () Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠåĪĿå§ĭåĮĸ toolbar ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġinit Toolbar () Ġ{} ĊĊĠĠĠ Ġ/** èİ·åıĸ toolbar ï¼Į æĿ¥ è®¾ç½® title ãĢģ subtitle ãĢģ appearance çŃī */ ĊĠĠĠ Ġfinal Ġfun Ġaction Bar () Ġ= Ġcom _ peng _ base ever thing _ toolbar ĊĊĠĠĠ Ġ/** èİ·åıĸ drawer Layout */ ĊĠĠĠ Ġfinal Ġfun Ġdrawer Layout () Ġ= Ġcom _ peng _ base ever thing _ drawer Layout ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® æ² ī æµ ¸ å¼ı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinit Imm ersion Bar () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Imm ersion Bar () ĊĠĠĠĠĠĠĠ ĠImm ersion Bar . with ( this ). title Bar ( R . id . com _ peng _ base ever thing _ toolbar ). init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ¯çĶ¨ toolbar ä¸ŃçļĦ å·¦ ä¾§ åĽ¾ æłĩ æĮīéĴ® ï¼Į å¹¶ çĶ¨ ä½ľ è¿ĶåĽŀ éĶ® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenable Left Icon () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( toggle Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ drawer Layout . remove Drawer Listener ( toggle !! ) ĊĠĠĠĠĠĠĠ Ġenable Left Icon ( R . drawable . ic _ back , Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOn Toolbar Icon ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Left Icon Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Base Activity ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Click Exit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ¯çĶ¨ toolbar ä¸ŃçļĦ å·¦ ä¾§ åĽ¾ æłĩ æĮīéĴ® ï¼Į èĩªå®ļä¹ī åĽ¾ æłĩ åĴĮ çĤ¹åĩ» åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenable Left Icon (@ Drawable Res Ġdrawable Res : ĠInt , Ġfunction : ĠOn Toolbar Icon ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar . set Navigation Icon ( drawable Res ) ĊĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . on Left Icon Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ menu çļĦ èµĦæºĲ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġmenu Res : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲĳ toolbar æ·»åĬł menu å¹¶ è®¾ç½® çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Menu Icons ( ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġoverflow Icon : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ Menu Res Ġmenu Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġmenu ItemClickListener : ĠToolbar . On MenuItem ClickListener ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . menu Res Ġ= Ġmenu Res ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æº ¢ åĩº åĽ¾çīĩ Ġ Ġå¦Ĥæŀľ ä¸į è®¾ç½® ä¼ļ é»ĺè®¤ ä½¿çĶ¨ ç³»ç»Ł çģ ° èī² çļĦ åĽ¾ æłĩ ĊĠĠĠĠĠĠĠ Ġif Ġ( overflow Icon Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar . overflow Icon Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResources Compat . get Drawable ( resources , Ġoverflow Icon , Ġtheme ) ĊĠĠĠĠĠĠĠ Ġ// å¡« åħħ menu ĊĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar . inflate Menu ( menu Res ) ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar . setOn MenuItem ClickListener ( menuItem ClickListener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠåĪĽå»º Options Menu Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( menu Res Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( menu Res !! , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ çĽĳåĲ¬ Options Menu çļĦ çĤ¹åĩ» äºĭä»¶ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® toolbar æº ¢ åĩº èıľåįķ çļĦ æł·å¼ı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Toolbar Popup Theme (@ Style Res Ġpopup Theme : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcom _ peng _ base ever thing _ toolbar . popup Theme Ġ= Ġpopup Theme ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ------------------- æİ¥åı£ ---------------------- */ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġtoolbar å·¦ ä¾§ æĮīéĴ® çĤ¹åĩ» çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠOn Toolbar Icon ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Left Icon Clicked () ĊĠĠĠ Ġ} Ċ }