Description
Implementation of Material Navigation View library is so easy. Make Google apps like stylish, rich, material Navigation Drawer in android apps.
Material NavigationView for Android ๐ฑ alternatives and similar packages
Based on the "App" category.
Alternatively, view Material NavigationView for Android ๐ฑ alternatives based on common mentions on social networks and blogs.
-
TextSecure
A private messenger for Android. -
BlackHole
A Music Player App made with Flutter -
wechat
A High Copy WeChat ,SNS APP (้ซไปฟๅพฎไฟก) -
HomeMirror
Android application powering the mirror in my house -
InstaMaterial
Implementation of Instagram with Material Design (originally based on Emmanuel Pacamalan's concept) -
ViMusic
An Android application for streaming music from YouTube Music. -
uhabits
Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits -
#<Sawyer::Resource:0x00007fe2aa53a5b8>
An alternative frontend for YouTube, for Android. -
AmazeFileManager
Material design file manager for Android -
WordPress-Android
WordPress for Android -
FlyRefresh
The implementation of https://dribbble.com/shots/2067564-Replace -
Lightning Browser
A lightweight Android browser with modern navigation -
ForkHub
GitHub client for Android based on the abandoned official app -
Twidere-Android
Twidere is a powerful twitter client for Android 1.6+ 1 , which gives you a full Holo experience and nearly full Twitter's feature. -
Telecine
Record full-resolution video on your Android devices. -
MaterialAudiobookPlayer
Minimalistic audiobook player -
Foodium ๐ฒย
๐ฒFoodium is a sample food blog Android application ๐ฑ built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Dagger 2/Hilt, Architecture Components, MVVM, Room, Retrofit, Moshi, Material Components). -
Bandhook-Kotlin
A showcase music app for Android entirely written using Kotlin language -
2048-android
The android port of the 2048 game (for offline playing) -
jianshi
A Full-Stack mobile app, including Android & Server, Simple-Poem ็ฎ่ฏ. You can write poem in graceful & traditional Chinese style. -
Etar Calendar
Android open source calendar -
keepassdroid
KeePass implementation for android -
droidplanner
Ground Control Station for Android Devices -
FeedEx
Flym News Reader is a light Android feed reader (RSS/Atom) -
Bourbon
An MVP Dribbble client for Android Mobile, Tablet, Wear and TV. -
News-Android-App
๐ฑ๐๏ธ Android client for the Nextcloud news/feed reader app -
DMPlayer
DMPLayer is an Android music player prototype -
Endoscope
Endoscope lets you to stream live video between android devices over Wi-Fi! ๐ฑ๐ฒ -
android-arsenal.com
Source to android-arsenal.herokuapp.com -
clean-status-bar
Tidy up your Android status bar before taking screenshots for the Play Store -
sgtpuzzles
Android port of Simon Tatham's Puzzles -
Leisure
Leisure is an Android App containing Zhihu Daily,Guokr Scientific,XinhuaNet News and Douban Books -
WaniKani-for-Android
An Android client application for the awesome kanji learning website wanikani.com -
AppIconNameChanger
Library to change Android launcher App Icon and App Name programmatically ! -
LeeCo
LeeCo is an awesome app for (including unlock) problems, solutions, discuss(from leetcode) and comments. -
OpenFlappyBird
An open source clone of a famous flappy bird game for Android using AndEngine -
OpenImgur
Open source Imgur Android App -
OpenLibra-Material
OpenLibra client on Material Design -
FoldingNavigationDrawer-Android
This is a sample project present how to use Folding-Android to add Folding Efect to Navigation Drawer. -
Flick Launcher
Pixel Launcher for everyone! -
TurtlePlayer
A Free, Fully Fledged, Open-Source Music Player for Android -
MaterialDesignColorPalette
This is a dev tool to visualize the colours of Material design defined on -
GradientDrawableTuner
๐น๏ธ See how the properties of Android's "shape" affect the Drawable's appearance, intuitively. -
vanilla
Vanilla Music Player for Android (abandoned). Visit https://github.com/vanilla-music/vanilla for an actively developed fork -
HackerNews
An open source Hacker News client for Android. -
freegemas-gdx
Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled. -
PopularMovies
:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2.
WorkOS - The modern identity platform for B2B SaaS
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Material NavigationView for Android ๐ฑ or a related project?
README
Material NavigationView for Android ๐ฑ
๐ฑ Android Library to implement Rich, Beautiful Material Navigation View for your project with Material Design Guidelines. Easy to use.
[](Images/GitHub.png)
Table of Contents:
Introduction
MaterialNavigationView library is built upon Google's Material Design library. This API will be useful to create rich, animated, beautiful Navigation View Drawer in Android app easily.
It follows all Material Design Guidelines as stated here.
MaterialNavigationView
class in this library is inherited from com.google.android.material.navigation.NavigationView
class. Just only difference is added extra design.
So, we can use it as it is.
Requirements
- AndroidX
- Minimum SDK API 19
- Theme - Material Components
Implementation
Implementation of Material Navigation View library is so easy. You can check /app directory for demo. Let's have look on basic steps of implementation. In this demo, we will populate The menu contents by a menu resource file.
Prerequisite
Gradle
In Build.gradle
of app module, include these dependencies.
dependencies {
// Material Navigation View Library
implementation 'com.shreyaspatil:MaterialNavigationView:1.2'
// Material Design Library
implementation 'com.google.android.material:material:1.0.0'
}
Set up Material Theme
Setting Material Theme to app is necessary before implementing Material Navigation View library. To set it up, update styles.xml
of values
directory in app.
colorSecondary
value is important here because this color is applied to menu item of Navigation View.
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- colorSecondary will be applied to Menu item of NavigationView -->
<item name="colorSecondary">@color/colorPrimary</item>
...
</style>
</resources>
These are required prerequisites to implement Material Navigation View library.
Create Activity XML
This is most commonly used in conjunction with DrawerLayout
to implement Material navigation drawers. Navigation drawers are modal elevated dialogs that come from the start/left side, used to display in-app navigation links.
NavigationView is a scrollable view that renders a menu resource (R.menu.<something>)
as a vertical list. It also renders a header view above the menu.
We are creating activity_main.xml
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<!-- Other Stuff here -->
<com.shreyaspatil.material.navigationview.MaterialNavigationView
android:id="@+id/nav_view"
android:theme="@style/Widget.NavigationView.RippleEffect"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:itemStyle="rounded_right"
app:menu="@menu/activity_main_drawer"/>
</androidx.drawerlayout.widget.DrawerLayout>
Available Flags
As already mentioned, this class is inherited from NavigationView
. You can use all exisiting flags of that class.
New important flag here is.
itemStyle
- Points to a style of menu item of Navigation drawer. There are currently 3 menu styles are defined as below Flag Value Description Preview default_style This flag sets design to default style to menu item of Navigation drawer.
rounded_right This flag sets design to menu item of Navigation drawer as Rounded Corners at right rounded_rectangle This flag sets design to menu item of Navigation drawer as Rounded Rectangular Corners
Example as follows:
<com.shreyaspatil.material.navigationview.MaterialNavigationView
...
app:itemStyle="rounded_right"/>
Thus, we have successfully implemented design styles of Menu items.
Create Activity Code (Java/Kotlin)
All the programmatic way of implementation of MaterialNavigationView
is same as NavigationView
. Just change is the class name only.
Two methods are added in this new class as follows..
setItemStyle(int itemStyle)
: This method sets the Item Style of Menu in MaterialNavigationView at runtime.itemStyle
should be one of the following constants :MaterialNavigationView.ITEM_STYLE_DEFAULT
MaterialNavigationView.ITEM_STYLE_ROUND_RIGHT
MaterialNavigationView.ITEM_STYLE_ROUND_RECTANGLE
getItemStyle()
: It returns the value of item style of menu.
Here is a demo of MaterialNavigationView
in which we will switch item style of NavigationView after selecting menu.
class MainActivity : AppCompatActivity() {
private lateinit var navView: MaterialNavigationView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
...
navView = findViewById(R.id.nav_view)
...
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_default -> {
navView.setItemStyle(MaterialNavigationView.ITEM_STYLE_DEFAULT)
}
R.id.action_round_rect -> {
navView.setItemStyle(MaterialNavigationView.ITEM_STYLE_ROUND_RECTANGLE)
}
R.id.action_round_right -> {
navView.setItemStyle(MaterialNavigationView.ITEM_STYLE_ROUND_RIGHT)
}
}
return false
}
}
Thus, we have implemented MaterialNavigationView
.
Migrating from NavigationView
If you are already using NavigationView
(com.google.android.material.navigation.NavigationView
) in your project and want to switch it to MaterialNavigationView
then you are done!
Do following Changes:
- Change in layout file - Just change package of component from
com.google.android.material.navigation.NavigationView
tocom.shreyaspatil.material.navigationview.MaterialNavigationView
wherever you used it. - Change in Activity Code - Just change
NavigationView
class toMaterialNavigationView
and import appropriate package.
:fire: Hurrah! you are done and successfully migrated to MaterialNavigationView
. Now just run your app and see magic.
Fast Implementation
Want to use it fast? Then here it is..
In Android Studio, Right Click -> New
-> Activity
-> Navigation Drawer Activity
and done.
Then Change just package in layout file and class name in Activity code file and you're done. Run your app and see magic :rocket:
Contribute
Let's develop with collaborations. We would love to have contributions by raising issues and opening PRs. Filing an issue before PR is must. If you have design/UI related idea, you can also do contributions in that. See [Contributing Guidelines](CONTRIBUTING.md).
Credits
This library is built using following open-source libraries.
If you like this library, Please start this repo and share with someone who need it. You can contribute if you have any suggestions or ideas to improve it.
License
Project is published under the GPL-3.0 license. Feel free to clone and modify repo as you want, but don't forget to add reference to authors :)
*Note that all licence references and agreements mentioned in the Material NavigationView for Android ๐ฑ README section above
are relevant to that project's source code only.