package Ġcom . mike pen z . material drawer . app Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . mike pen z . icon ics . Icon ics Drawable Ċ import Ġcom . mike pen z . icon ics . type face . library . fontawesome . FontAwesome Ċ import Ġcom . mike pen z . icon ics . type face . library . google material . Google Material Ċ import Ġcom . mike pen z . icon ics . utils . action Bar Ċ import Ġcom . mike pen z . icon ics . utils . padding Dp Ċ import Ġcom . mike pen z . material drawer . holder . Badge Style Ċ import Ġcom . mike pen z . material drawer . icon ics . with Icon Ċ import Ġcom . mike pen z . material drawer . interfaces . On Checked ChangeListener Ċ import Ġcom . mike pen z . material drawer . model .* Ċ import Ġcom . mike pen z . material drawer . model . interfaces .* Ċ import Ġcom . mike pen z . material drawer . widget . Account Header View Ċ import Ġkotlinx . android . synt hetic . main . activity _ embedded .* Ċ Ċ class ĠEmbedded Drawer Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġheader View : ĠAccount Header View ĊĊĠĠĠ Ġprivate Ġval Ġon Checked ChangeListener Ġ= Ġobject Ġ: ĠOn Checked ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CheckedChanged ( drawer Item : ĠID raw er Item <* >, Ġbutton View : ĠCompound Button , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawer Item Ġis ĠName able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" material - drawer ", Ġ" Drawer Item : Ġ" Ġ+ Ġ( drawer Item Ġas ĠName able ). name Ġ+ Ġ" Ġ- Ġtoggle Checked : Ġ" Ġ+ Ġis Checked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" material - drawer ", Ġ" toggle Checked : Ġ$ isChecked ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ embedded ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġ// set Ġthe Ġback Ġarrow Ġin Ġthe Ġtoolbar ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setTitle ( R . string . drawer _ item _ embedded _ drawer ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġfew Ġsample Ġprofile ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE Ġyou Ġhave Ġto Ġdefine Ġthe Ġloader Ġlogic Ġtoo . ĠSee Ġthe ĠCustom Application Ġfor Ġmore Ġdetails ĊĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= ĠProfile Drawer Item (). with Name (" Mi ke ĠP enz "). with Email (" mike pen z @ gmail . com "). with Icon (" https :// avatars 3 . githubusercontent . com / u / 1 4 7 6 2 3 2 ? v = 3 & s = 4 6 0 ") ĊĠĠĠĠĠĠĠ Ġval Ġprofile 2 Ġ= ĠProfile Drawer Item (). with Name (" B ern at ĠBor ras "). with Email (" al orm a @ github . com "). with Icon ( Uri . parse (" https :// avatars 3 . githubusercontent . com / u / 8 8 7 4 6 2 ? v = 3 & s = 4 6 0 ")) ĊĠĠĠĠĠĠĠ Ġval Ġprofile 3 Ġ= ĠProfile Drawer Item (). with Name (" Max ĠM uster "). with Email (" max . m uster mann @ gmail . com "). with Icon ( resources . get Drawable ( R . drawable . profile 2 )) ĊĠĠĠĠĠĠĠ Ġval Ġprofile 4 Ġ= ĠProfile Drawer Item (). with Name (" F elix ĠHouse "). with Email (" fel ix . house @ gmail . com "). with Icon ( resources . get Drawable ( R . drawable . profile 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġprofile 5 Ġ= ĠProfile Drawer Item (). with Name (" Mr . ĠX "). with Email (" m ister . x . super @ gmail . com "). with Icon ( resources . get Drawable ( R . drawable . profile 4 )). with Identifier ( 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġprofile 6 Ġ= ĠProfile Drawer Item (). with Name (" B at man "). with Email (" bat man @ gmail . com "). with Icon ( resources . get Drawable ( R . drawable . profile 5 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠAccount Header ĊĠĠĠĠĠĠĠ Ġheader View Ġ= ĠAccount Header View ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattach To Slider View ( slider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Profiles ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// don 't Ġask Ġbut Ġgoogle Ġuses Ġ 1 4 dp Ġfor Ġthe Ġadd Ġaccount Ġicon Ġin Ġg mail Ġbut Ġ 2 0 dp Ġfor Ġthe Ġnormal Ġicons Ġ( like Ġmanage Ġaccount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Setting Drawer Item (). with Name (" Add ĠAccount "). with Description (" Add Ġnew ĠGitHub ĠAccount "). with Icon ( Icon ics Drawable ( context , ĠGoogle Material . Icon . gmd _ add ). apply Ġ{ Ġaction Bar (); Ġpadding Dp Ġ= Ġ 5 Ġ}). with Icon Tint ed ( true ). with Identifier ( PROFILE _ SETTING . to Long ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Setting Drawer Item (). with Name (" Manage ĠAccount "). with Icon ( Google Material . Icon . gmd _ settings ). with Identifier ( 1 0 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Account Header Listener Ġ= Ġ{ Ġview , Ġprofile , Ġcurrent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// sample Ġusage Ġof Ġthe Ġon Profile Changed Ġlistener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġthe Ġclicked Ġitem Ġhas Ġthe Ġidentifier Ġ 1 Ġadd Ġa Ġnew Ġprofile Ġ;) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( profile Ġis ĠID raw er Item < *> Ġ&& Ġ( profile Ġas ĠID raw er Item < *> ). identifier Ġ== ĠPRO FILE _ SETTING . to Long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Profile Ġ= ĠProfile Drawer Item (). with Name Shown ( true ). with Name (" B at man "). with Email (" bat man @ gmail . com "). with Icon ( resources . get Drawable ( R . drawable . profile 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader View . profiles ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// we Ġknow Ġthat Ġthere Ġare Ġ 2 Ġsetting Ġelements . Ġset Ġthe Ġnew Ġprofile Ġabove Ġthem Ġ;) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader View . add Profile ( new Profile , Ġit . size Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġheader View . add Profiles ( new Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// false Ġif Ġyou Ġhave Ġnot Ġconsumed Ġthe Ġevent Ġand Ġit Ġshould Ġclose Ġthe Ġdrawer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Saved Instance ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġslider . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Width Ġ= ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Adapter . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . drawer _ item _ compact _ header ). with Icon ( Google Material . Icon . gmd _ brightness _ 5 ). with Identifier ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . drawer _ item _ action _ bar _ drawer ). with Icon ( FontAwesome . Icon . f aw _ home ). with Badge (" 2 2 "). with Badge Style ( Badge Style ( Color . RED , ĠColor . RED )). with Identifier ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . drawer _ item _ multi _ drawer ). with Icon ( FontAwesome . Icon . f aw _ gamepad ). with Identifier ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . drawer _ item _ non _ trans luc ent _ status _ drawer ). with Icon ( FontAwesome . Icon . f aw _ eye ). with Identifier ( 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Description (" A Ġmore Ġcomplex Ġsample "). with Name ( R . string . drawer _ item _ advanced _ drawer ). with Icon ( Google Material . Icon . gmd _ adb ). with Identifier ( 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSection Drawer Item (). with Name ( R . string . drawer _ item _ section _ header ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecondary Drawer Item (). with Name ( R . string . drawer _ item _ open _ source ). with Icon ( FontAwesome . Icon . f aw _ github ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecondary Drawer Item (). with Name ( R . string . drawer _ item _ contact ). with Icon ( Google Material . Icon . gmd _ format _ color _ fill ). with Tag (" B ull h orn "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Drawer Item (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSwitch Drawer Item (). with Name (" Switch "). with Icon ( Google Material . Icon . gmd _ pan _ tool ). with Checked ( true ). with On Checked ChangeListener ( on Checked ChangeListener ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToggle Drawer Item (). with Name (" Toggle "). with Icon ( Google Material . Icon . gmd _ pan _ tool ). with Checked ( true ). with On Checked ChangeListener ( on Checked ChangeListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Drawer ItemClickListener Ġ= Ġ{ Ġv , Ġdrawer Item , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawer Item Ġis ĠName able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Embedded Drawer Activity , Ġdrawer Item . name ?. getText ( this @ Embedded Drawer Activity ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Saved Instance ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState (_ out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġout State Ġ= Ġ_ out State ĊĠĠĠĠĠĠĠ Ġ// add Ġthe Ġvalues Ġwhich Ġneed Ġto Ġbe Ġsaved Ġfrom Ġthe Ġdrawer Ġto Ġthe Ġbundle ĊĠĠĠĠĠĠĠ Ġout State Ġ= Ġslider . save InstanceState ( out State ) ĊĊĠĠĠĠĠĠĠ Ġ// add Ġthe Ġvalues Ġwhich Ġneed Ġto Ġbe Ġsaved Ġfrom Ġthe Ġaccount Header Ġto Ġthe Ġbundle ĊĠĠĠĠĠĠĠ Ġout State Ġ= Ġheader View . save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// handle Ġthe Ġclick Ġon Ġthe Ġback Ġarrow Ġclick ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRO FILE _ SETTING Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ } Ċ