package Ġcom . line cy . interest ing . ui Ċ Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . databinding . ViewData Binding Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . line cy . interest ing . R Ċ import Ġcom . line cy . interest ing . ui . home . bottom sheet . Bottom Drawer Fragment Ċ import Ġcom . line cy . interest ing . ui . home . bottom sheet . Search Fragment Ċ import Ġkotlinx . android . synt hetic . main . layout _ base . base View Ċ import Ġkotlinx . android . synt hetic . main . layout _ base . bottom AppBar Ċ import Ġkotlinx . android . synt hetic . main . layout _ base . bottom Fab ĊĊ Ċ /** Ċ Ġ* Ġ@ author Ġby Ġline cy . Ċ Ġ*/ Ċ abstract Ġclass ĠBase Activity < VB Ġ: ĠView Data Binding > Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġprivate Ġvar Ġactivity Binding : ĠVB ? Ġ= Ġnull ĊĊĠ Ġprivate Ġvar Ġshow Bottom AppBar : ĠBoolean Ġ= Ġtrue ĊĠ Ġprivate Ġvar Ġhide System Bottom Nav : ĠBoolean Ġ= Ġtrue ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġval Ġlayout Id Ġ= Ġlayout Res Id () ĊĠĠĠ Ġif Ġ( 0 Ġ== Ġlayout Id ) Ġ{ ĊĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" You Ġmust Ġme Ġset Ġlayout Ġresource Ġid Ġnow .") ĊĠĠĠ Ġ} ĊĠĠĠ ĠsetContentView ( layout Id ) ĊĠĠĠ Ġset Support ActionBar ( bottom AppBar ) ĊĠĠĠ Ġbottom AppBar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠ Ġon Bottom AppBar Up () ĊĠĠĠ Ġ} ĊĠĠĠ Ġbottom Fab . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġon Bottom AppBar Fab () ĊĠĠĠ Ġ} ĊĠĠĠ Ġon Init View ( savedInstanceState ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( show Bottom AppBar ) Ġ{ ĊĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . navigation _ bottom _ app _ bar , Ġmenu ) ĊĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( show Bottom AppBar ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( item ?. itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . id . navigation _ search Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠfindViewById < View >( R . id . navigation _ search ) ĊĠĠĠĠĠĠĠĠĠ Ġview . transition Name Ġ= ĠgetString ( R . string . transition Name Image ) ĊĠĠĠĠĠĠĠĠĠ ĠSearch Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Fragment :: class . java . simple Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . navigation _ menu ĊĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠBottom Drawer Fragment . getInstance ( R . menu . bottom _ normal _ menu ). show ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Drawer Fragment :: class . java . simple Name ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠsetContentView ( layout Res ID : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġroot View Ġ= ĠfindViewById < ViewGroup >( android . R . id . content ) ĊĠĠĠ Ġroot View . removeAll Views () ĊĠĠĠ Ġlayout Inflater . inflate ( R . layout . layout _ base , Ġroot View ) ĊĠĠĠ Ġactivity Binding Ġ= ĠData Binding Util . inflate ( layout Inflater , Ġlayout Res ID , Ġbase View , Ġfalse ) ĊĊĠĠĠ Ġ// å°Ĩ ä¼łåħ¥ çļĦ å¸ĥå±Ģ è®¾ ä¸º ç¬¬ä¸Ģä¸ª ï¼Į ä¿ĿæĮģ bottom AppBar æ¼ Ĥ æµ ® åľ¨ å¸ĥå±Ģ ä¹ĭ ä¸Ĭ ĊĠĠĠ Ġ// åĩı å°ĳ ä¸Ģ å±Ĥ fragment Layout ä¹ĭ ç±»çļĦ ï¼Į éģ¿åħį åĨį æ¬¡ add ĊĠĠĠ Ġif Ġ( null Ġ== Ġactivity Binding ) Ġ{ ĊĠĠĠĠĠ Ġval Ġview Ġ= Ġlayout Inflater . inflate ( layout Res ID , Ġbase View , Ġfalse ) ĊĠĠĠĠĠ Ġbase View . addView ( view , Ġ 0 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġbase View . addView ( activity Binding ?. root , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ// è§£åĨ³ è§£ éĻ¤ éĶģ å±ı åĲİ éĩįæĸ° å±ķç¤º åºķ éĥ¨ èĻļæĭŁ æĮī éĶ® éĹ®é¢ĺ ï¼Į ĊĠĠĠ Ġ// ä¼ļ ä¸İ bottom AppBar åĨ² çªģ ï¼Ł ï¼Ł ï¼Ł å·² è§£åĨ³ ï¼Į è¯¦ è§ģ Scale Down Show Behavior ĊĠĠĠ Ġif Ġ( hide System Bottom Nav ) Ġ{ ĊĠĠĠĠĠ Ġhide System Bottom Navigation () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġabstract Ġfun Ġlayout Res Id (): ĠInt ĊĊĠ Ġabstract Ġfun Ġon Init View ( savedInstanceState : ĠBundle ?) ĊĊĠ Ġprotected Ġfun Ġshow System Bottom Navigation () Ġ{ ĊĠĠĠ Ġthis . hide System Bottom Nav Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġhide System Bottom Navigation () Ġ{ ĊĠĠĠ Ġwindow ?. decor View ?. let Ġ{ ĊĠĠĠĠĠ Ġit . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġor ĊĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè¿ĶåĽŀ çĤ¹åĩ» åĽŀè°ĥ ĊĠĠ Ġ*/ ĊĠ Ġprotected Ġopen Ġfun Ġon Bottom AppBar Up () Ġ{ ĊĠĠĠ Ġsupport Finish After Transition () ĊĠ Ġ} ĊĊĊĠ Ġ/** ĊĠĠ Ġ* Ġbottom Fab Ġ çĤ¹åĩ» åĽŀè°ĥ ĊĠĠ Ġ*/ ĊĠ Ġprotected Ġopen Ġfun Ġon Bottom AppBar Fab () Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ éļĲèĹı åºķ éĥ¨ å¯¼èĪª æłı ĊĠĠ Ġ*/ ĊĠ Ġprotected Ġfun Ġhide Bottom AppBar () Ġ{ ĊĠĠĠ Ġbottom AppBar . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġbottom Fab . hide () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® bottom Fab Ġicon ĊĠĠ Ġ*/ ĊĠ Ġprotected Ġfun Ġset Bottom Fab Image Resource (@ Drawable Res Ġres Id : ĠInt ) Ġ{ ĊĠĠĠ Ġbottom Fab . setImage Resource ( res Id ) ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġset Bottom Fab Image Drawable ( drawable : ĠDrawable ?) Ġ{ ĊĠĠĠ Ġbottom Fab . setImage Drawable ( drawable ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠ Ġsupport Finish After Transition () ĊĠ Ġ} Ċ }