AnkoNavigationDrawer
Library for implementation Navigation Drawer with styles in Anko
Install / Use
/learn @utsmannn/AnkoNavigationDrawerREADME
Anko Navigation Drawer
Easy implementation Navigation Drawer in Anko Layout support New Material Design, multi styles, custom icon/drawable navigation and custom font.
|DEFAULT STYLE|NEW MATERIAL STYLE|GOOGLE KEEP STYLE|
|--|--|--|
|
|
|
|
SETUP
1. Add gradle dependency
implementation 'com.utsman.kucingapes:ankodrawer:0.2.4'
//required anko libraries
implementation "org.jetbrains.anko:anko:$anko_version"
implementation "org.jetbrains.anko:anko-design:$anko_version"
2. Add drawer in onCreate
Implement AnDrawerClickListener on your activity class.
Add after super.onCreate(savedInstanceState)
val drawer = AnDrawer(clickListener, colorDrawer)
frameLayout { anDrawerLayoutWithToolbar(drawer) }
Example
class MainActivity : AppCompatActivity(), AnDrawerClickListener {
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
// code your drawer
val drawer = AnDrawer(this, R.color.colorPrimary)
frameLayout { anDrawerLayoutWithToolbar(drawer) }
}
}
3. Add MainUI class
- Don't apply MainUI with
MainUI().setContentView(this) - Extend MainUI with
AnkoComponent<ViewGroup>
Example
class MainUi : AnkoComponent<ViewGroup> {
override fun createView(ui: AnkoContext<ViewGroup>): View = with(ui) {
coordinatorLayout {
relativeLayout {
textView("MAIN VIEW").lparams { centerInParent() }
}.lparams(matchParent, matchParent)
}
}
}
<br>
Add after frameLayout { anDrawerLayoutWithToolbar(drawer) }
AnDrawerInit.setupMainView(this, MainUi())
Items Navigation
Simple
val item = AnDrawerItem("Title item")
drawer.addItems().add(item)
Divider
val divider = AnDrawerItem(AnDrawerItem.DIVIDER)
drawer.addItems().add(divider)
Optional <br>
- Add icon (very recommended)
val item = AnDrawerItem("Title item").addIcon(R.drawable.ic_face)
- Add identifier (very recommended)
val item = AnDrawerItem("Title item").addIdentifier(1)
- Disable focus<br> When item disable focus, item can't be highlight on click, suitable with intent
val item = AnDrawerItem("Title item").setFocusable(false)
- Selected item<br> Select item on first launch app, need identifier on item
drawer.setSelectedItem(identifier)
Example
drawer.addItems().apply {
val item1 = AnDrawerItem("Item 1")
.addIcon(R.drawable.ic_emoticon)
.addIdentifier(1)
val item2 = AnDrawerItem("Item 2")
.addIcon(R.drawable.ic_face)
.addIdentifier(2)
val divider = AnDrawerItem(AnDrawerItem.DIVIDER)
add(divider)
add(item1)
add(item2)
drawer.setSelectedItem(2)
}
Item Clicked
Override function onDrawerClick from AnDrawerClickListener and setup click listener with identifier item
override fun onDrawerClick(identifier: Int) {
super.onDrawerClick(identifier)
when (identifier) {
1 -> toast("wah")
2 -> toast("gile")
3 -> toast("lu")
}
}
Custom Toolbar (very recommended)
-
Change style parent to
Theme.AppCompat.Light.NoActionBarin styles.xml -
Add
toolbarorthemedToolbarfromorg.jetbrains.anko.appcompat.v7in your MainUI class
class MainUi : AnkoComponent<ViewGroup> {
override fun createView(ui: AnkoContext<ViewGroup>): View = with(ui) {
coordinatorLayout {
// toolbar
themedToolbar(R.style.ThemeOverlay_AppCompat_Dark) {
backgroundColorResource = R.color.colorPrimary
id = R.id.toolbar
title = context.getString(R.string.app_name)
}.lparams(matchParent, dimenAttr(R.attr.actionBarSize))
// end toolbar
relativeLayout {
textView("MAIN VIEW").lparams { centerInParent() }
}.lparams(matchParent, matchParent)
}
}
}
And add customToolbar(activity, toolbar) after setupMainView
AnDrawerInit.setupMainView(this, MainUi())
// setup toolbar
AnDrawerInit.customToolbar(this, find(R.id.toolbar))
|Without custom toolbar|with custom toolbar|
|--|--|
|
|
|
Icon Navigation Toolbar
You can add custom toolbar with customToolbar(activity, toolbar, int_icon) or customToolbar(activity, toolbar, drawable)
- Add your own custom toolbar after
setupMainView
AnDrawerInit.setupMainView(this, MainUi())
// your toolbar with custom icon
AnDrawerInit.customToolbar(this, find(R.id.toolbar), icon)
SPEC ICON <br> width = 24dp<br> height = 24dp
or for drawable<br> width = 30dp<br> height = 30dp
You can find material icon in https://material.io/tools/icons/, convert svg to xml in http://inloop.github.io/svg2android/
ICON DRAWABLE <br>I recommend use Picasso and Picasso Transformations for load and make it circle
In gradle
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'jp.wasabeef:picasso-transformations:2.2.1'
Add customToolbar in Target Picasso after setupMainView
AnDrawerInit.setupMainView(this, MainUi())
// get drawable and circle it using picasso
Picasso.get()
.load(R.drawable.cat)
.transform(CropCircleTransformation()) // transform to circle
.into(object : Target {
override fun onPrepareLoad(placeHolderDrawable: Drawable) {}
override fun onBitmapFailed(e: Exception, errorDrawable: Drawable) {}
override fun onBitmapLoaded(bitmap: Bitmap, from: Picasso.LoadedFrom) {
// add drawable from bitmap
val drawable = BitmapDrawable(resources, Bitmap.createScaledBitmap(bitmap, dip(30), dip(30), true))
// add custom toolbar
AnDrawerInit.customToolbar(this@MainActivity, find(R.id.toolbar), drawable)
}
})
|With default icon|With custom icon|With drawable icon|
|--|--|--|
|
|
|
|
Header Navigation (optional)
You need anko class header with extend AnkoComponent<ViewGroup>, and setup with
AnDrawerInit.setupHeader(this, HeaderUi())
Example HeaderUI
class HeaderUi : AnkoComponent<ViewGroup> {
override fun createView(ui: AnkoContext<ViewGroup>): View = with(ui) {
relativeLayout {
lparams(matchParent, dip(200))
backgroundColorResource = R.color.colorPrimary
textView("CUSTOM HEADER") {
textColorResource = android.R.color.white
typeface = Typeface.DEFAULT_BOLD
textSize = 20f
}.lparams { centerInParent() }
}
}
}
Styles (optional)
Available style:
AnDrawerView.STYLE.DEFAULTAnDrawerView.STYLE.NEW_MATERIALAnDrawerView.STYLE.GOOGLE_KEEP
Setup style
drawer.setNavigationStyle(AnDrawerView.STYLE.GOOGLE_KEEP)
Open and Close Drawer
AnDrawerInit.openDrawer(activity) // open drawer
AnDrawerInit.closeDrawer(activity) // close drawer
Drawer StatusBar Color
drawer.setDrawerStatusBar(int_color)
Drawer Custom Font
drawer.setFont("fonts/GoogleSans-Medium.ttf") // font from assets
Example
Example class MainActivity.kt
END
Related Skills
diffs
344.4kUse the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
clearshot
Structured screenshot analysis for UI implementation and critique. Analyzes every UI screenshot with a 5×5 spatial grid, full element inventory, and design system extraction — facts and taste together, every time. Escalates to full implementation blueprint when building. Trigger on any digital interface image file (png, jpg, gif, webp — websites, apps, dashboards, mockups, wireframes) or commands like 'analyse this screenshot,' 'rebuild this,' 'match this design,' 'clone this.' Skip for non-UI images (photos, memes, charts) unless the user explicitly wants to build a UI from them. Does NOT trigger on HTML source code, CSS, SVGs, or any code pasted as text.
openpencil
2.0kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
ui-ux-pro-max-skill
56.5kAn AI SKILL that provide design intelligence for building professional UI/UX multiple platforms
