package Ġcom . mike pen z . about libraries . sample Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġcom . mike pen z . about libraries . Lib Task Callback Ċ import Ġcom . mike pen z . about libraries . Lib s Ċ import Ġcom . mike pen z . about libraries . Lib s Builder Ċ import Ġcom . mike pen z . about libraries . Lib s Configuration Ċ import Ġcom . mike pen z . about libraries . entity . Library Ċ import Ġcom . mike pen z . about libraries . sample . databinding . Activity Fragment Binding Ċ import Ġcom . mike pen z . about libraries . util . toString Array Ċ import Ġcom . mike pen z . fast adapter . adapters . Item Adapter Ċ import Ġcom . mike pen z . material drawer . model . Primary Drawer Item Ċ import Ġcom . mike pen z . material drawer . model . interfaces . with Identifier Ċ import Ġcom . mike pen z . material drawer . model . interfaces . with Name Ċ import Ġcom . mike pen z . material drawer . model . interfaces . with Selectable Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmi ke pen z Ġon Ġ 0 4 . 0 6 . 1 4 . Ċ Ġ*/ Ċ class ĠFragment Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Fragment Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaction Bar Drawer Toggle : ĠAction Bar Drawer Toggle ĊĊĠĠĠ Ġinternal Ġvar Ġlib Task Callback : ĠLib Task Callback Ġ= Ġobject Ġ: ĠLib Task Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Lib Task Started () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" About Libraries ", Ġ" started ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Lib Task Finished ( fast Item Adapter : ĠItem Adapter <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" About Libraries ", Ġ" finished ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġlibs UI Listener : ĠLib s Configuration . Lib s UI Listener Ġ= Ġobject Ġ: ĠLib s Configuration . Lib s UI Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpre On Create View ( view : ĠView ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpost On Create View ( view : ĠView ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġlibs Listener : ĠLib s Configuration . Lib s Listener Ġ= Ġobject Ġ: ĠLib s Configuration . Lib s Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Icon Clicked ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( v . context , Ġ" We Ġare Ġable Ġto Ġtrack Ġthis Ġnow Ġ; )", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Library Author Clicked ( v : ĠView , Ġlibrary : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Library Content Clicked ( v : ĠView , Ġlibrary : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Library Bottom Clicked ( v : ĠView , Ġlibrary : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Extra Clicked ( v : ĠView , Ġspecial Button : ĠLib s . Special Button ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Icon Long Clicked ( v : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Library Author Long Clicked ( v : ĠView , Ġlibrary : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Library Content Long Clicked ( v : ĠView , Ġlibrary : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Library Bottom Long Clicked ( v : ĠView , Ġlibrary : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Fragment Binding . inflate ( layout Inflater ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( it . root ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Remove Ġline Ġto Ġtest ĠRTL Ġsupport ĊĠĠĠĠĠĠĠ Ġ// window . decor View . layout Direction Ġ= ĠView . LAYOUT _ DIRECTION _ RTL ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠToolbar ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < View >( R . id . toolbar ) Ġas ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Home Button Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġaction Bar Drawer Toggle Ġ= ĠAction Bar Drawer Toggle ( this , Ġbinding . root , Ġtoolbar , ĠR . string . material _ drawer _ open , ĠR . string . material _ drawer _ close ) ĊĊĠĠĠĠĠĠĠ Ġbinding . slider . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Adapter . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name (" Home "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . action _ manifest activity ). with Identifier ( R . id . action _ manifest activity . to Long ()). with Selectable ( false ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . action _ minimal activity ). with Identifier ( R . id . action _ minimal activity . to Long ()). with Selectable ( false ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . action _ extend activity ). with Identifier ( R . id . action _ extended activity . to Long ()). with Selectable ( false ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . action _ custom sort activity ). with Identifier ( R . id . action _ custom sort activity . to Long ()). with Selectable ( false ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item (). with Name ( R . string . action _ opensource ). with Identifier ( R . id . action _ opensource . to Long ()). with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Drawer ItemClickListener Ġ= Ġ{ Ġ_, Ġdrawer Item , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( drawer Item . identifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ opensource . to Long () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse (" https :// github . com / mike pen z / About Libraries ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( browser Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ extended activity . to Long () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠExtend Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ custom sort activity . to Long () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠCustom Sort Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ minimal activity . to Long () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġand Ġlaunch Ġan Ġactivity Ġin Ġminimal Ġdesign Ġwithout Ġany Ġadditional Ġmodifications ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLib s Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fields ( R . string :: class . java . fields ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with About Minimal Design ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Edge To Edge ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Activity Title (" Open ĠSource ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with About Icon Shown ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Search Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start ( this @ Fragment Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ manifest activity . to Long () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġand Ġlaunch Ġan Ġactivity Ġin Ġfull Ġdesign , Ġwith Ġvarious Ġconfigurations Ġand Ġadjust ments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLib s Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fields ( R . string :: class . java . fields ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Libraries (" c rout on ", Ġ" action bar sher lock ", Ġ" show case view ", Ġ" glide ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Auto Detect ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with License Shown ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Version Shown ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Activity Title (" Open ĠSource ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Edge To Edge ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Listener ( libs Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Lib Task Callback ( lib Task Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Ui Listener ( libs UI Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Search Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start ( this @ Fragment Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ// NOTE : ĠThis Ġis Ġhow Ġyou Ġcan Ġmodify Ġa Ġspecific Ġlibrary Ġdefinition Ġduring Ġruntime ĊĠĠĠĠĠĠĠ ĠHashMap < String , ĠHashMap < String , ĠString >> Ġlibs Modification Ġ= Ġnew ĠHashMap < String , ĠHashMap < String , ĠString >>(); ĊĠĠĠĠĠĠĠ ĠHashMap < String , ĠString > Ġmodify About Libraries Ġ= Ġnew ĠHashMap < String , ĠString >(); ĊĠĠĠĠĠĠĠ Ġmodify About Libraries . put (" name ", Ġ"_ About Libraries "); ĊĠĠĠĠĠĠĠ Ġlibs Modification . put (" about libraries ", Ġmodify About Libraries ); ĊĠĠĠĠĠĠĠ Ġ. with Library Modification ( libs Modification ); ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠLib s Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fields ( R . string :: class . java . fields ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Version Shown ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with License Shown ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfind Ġids Ġvia Ġ'./ gradle w Ġfind Libraries ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Library Modification (" android x _ activity __ activity ", ĠLib s . Library Fields . LIBRARY _ NAME , Ġ" Activity ĠSupport ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Library Enchant ment (" com _ mike pen z __ fast adapter ", Ġ" fast adapter ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. support Fragment () ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction (). replace ( R . id . frame _ container , Ġfragment ). commit () ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow case Ġto Ġuse Ġthe Ġlibrary Ġmeta Ġinformation Ġwithout Ġthe ĠUI Ġmodule ĊĠĠĠĠĠĠĠ ĠLib s ( this , ĠR . string :: class . java . fields . toString Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prepare Libraries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" About Libraries ", Ġit . library Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġaction Bar Drawer Toggle . on Configuration Changed ( new Config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġaction Bar Drawer Toggle . sync State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction Bar Drawer Toggle . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ } Ċ