GoogleNavigationDrawerMenu alternatives and similar packages
Based on the "Menu Widget" category.
Alternatively, view GoogleNavigationDrawerMenu alternatives based on common mentions on social networks and blogs.
-
SlidingMenu
An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks! -
Side-Menu.Android
Side menu with some categories to choose. -
Context-Menu.Android
You can easily add awesome animated context menu to your app. -
android-menudrawer
*DEPRECATED* A slide-out menu implementation, which allows users to navigate between views in your app. -
AndroidResideMenu
The idea of ResideMenu is from Dribbble 1 and 2. It has come true and run in iOS devices. iOS ResideMenu This project is the RefsideMenu Android version. The visual effect is partly referred to iOS version of ResideMenu. And thanks to the authors for the above idea and contribution. -
CircularFloatingActionMenu
an animated circular menu for Android -
FlowingDrawer
swipe display drawer with flowing & bouncing effects. -
BottomSheet
One way to present a set of actions to a user is with bottom sheets, a sheet of paper that slides up from the bottom edge of the screen. Bottom sheets offer flexibility in the display of clear and simple actions that do not need explanation. -
android-satellite-menu
Android Satellite Menu -
ArcMenu
An android custom view which looks like the menu in Path 2.0 (for iOS). -
Material-BottomNavigation
Bottom Navigation widget component inspired by the Google Material Design Guidelines at https://www.google.com/design/spec/components/bottom-navigation.html -
LuseenBottomNavigation
BottomNavigationView Designed according Google guideLine -
PowerMenu
:fire: Powerful and modernized popup menu with fully customizable animations. -
ActionSheetForAndroid
iOS UIActionSheet for Android -
DropDownMenu
DropDownMenu for Android,Filter the list based on multiple condition. -
FilterMenu
An implemention of Filter Menu concept for android -
RibbonMenu
Navigation menu for Android (based off Google+ app) -
ActionsContentView
ActionsContentView is an standalone library implements actions/content swiping view (AKA Side Navigation UI Pattern, AKA Facebook side menu). The library doesn't use any specific code introduced in new Android SDK versions. This allows develop an application with an action/content swiping view for every version of Android from 2.2 and up. -
Android Wheel Menu
Simple and easy to use circular menu widget for Android. -
MultiCardMenu
A multicard menu that can open and close with animation on android -
SideNavigation
Implementation of "Side Navigation" or "Fly-in app menu" pattern for Android (based on Google+ app) -
BlurNavigationDrawer
Android - Blur Navigation Drawer like Etsy app. -
Android-CircleMenu
Menu with items on a rotating circle -
Folder-ResideMenu
An extension of ResideMenu -
CustomMenu
CustomMenu quickly realize about the menu -
simple-side-drawer
Simple library which enable you to add a drawer(slide-out) navigation to your android application -
android-floating-action-menu
Floating Action Menu for Android. Inspired by the Google Plus floating menu -
Android-NewPopupMenu
Android-NewPopupMenu is an android library to create popup menu with GoogleMusic app-like style. -
Metaball-Menu
A menu consisting of icons (ImageViews) and metaball bouncing selection to give a blob effect. Inspired by Material design -
AndroidPullMenu
An Android Library that allows users to pull down a menu and select different actions. It can be implemented inside ScrollView, GridView, ListView. -
SlidingUpMenu
๐ A very customizable library that allows you to present menu items (from menu resource and/or other sources) to users as a bottom sheet.
Appwrite - The Open Source Firebase alternative introduces iOS support
* 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 GoogleNavigationDrawerMenu or a related project?
README
GoogleNavigationDrawerMenu
This project aims to let you use a ListView menu similar to the one in the new Google Apps (Keep, Play Music...) without having to do any extra effort. Sorry for the long name, though.
[Screenshot](GoogleNavigationDrawer.jpg)
Index
Features
With GoogleNavigationDrawerMenu you can:
- Set a GoogleApp-styled DrawerLayout menu and only have to specify the main content for your app, you no longer have set the ListView and its styles. Everything is handled by the GoogleNavigationDrawer class.
- Set main and secondary sections to the menu.
- Set a list of icons for those sections (optional).
- Both text and icons remain selected when you click on them.
- Set an OnNavigationSectionSelected listener so you can handle section selection events.
- Change the background of the list items.
- Set a header and footer to the inner ListView.
How to use
1. Include the library:
Manually (Option A):
Download the source code and import GoogleNavigationDrawerMenuLibrary
folder as a Library Module in Android Studio or as a Project in Eclipse (still not tested).
Manually (Option B):
- Download the [AAR](aars/GoogleNavigationDrawerMenuLibrary.aar?raw=true).
- Put it in the
aars
folder of your Android Studio project. Add a File Dependency or add it to the
build.gradle
of your main Module, like this:repositories { mavenCentral() flatDir { dirs 'aars' } }
Notice the flatDir
local maven repository created. Now you will have to add the aar file to the dependencies list, as if you were adding it from Maven Central Repository:
compile 'com.arasthel:gnavdrawer-library:+'
Automatic (Gradle):
Add it to your Application Module's build.gradle
:
Declare it into your build.gradle
dependencies{
compile 'com.arasthel:gnavdrawer-library:+'
}
2. Use class in XML or code:
Example of how to use it on an XML code:
<org.arasthel.googlenavdrawermenu.views.GoogleNavigationDrawer
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:drawer="http://schemas.android.com/apk/res-auto"
android:id="@+id/navigation_drawer_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
drawer:list_paddingTop="?android:actionBarSize"
drawer:drawer_gravity="start"
drawer:list_mainSectionsEntries="@array/navigation_main_sections"
drawer:list_secondarySectionsEntries="@array/navigation_secondary_sections"
drawer:list_mainSectionsDrawables="@array/drawable_ids"
drawer:list_secondarySectionsDrawables="@array/drawable_ids">
<FrameLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</org.arasthel.googlenavdrawermenu.views.GoogleNavigationDrawer>
You may think 'Ok, so where's the menu?'. Well, the GoogleNavigationDrawer class itself contains it and handles it so you don't have to manually modify it. You can customize it, though, you can find that info in Customizing Section.
All the drawer:*
attributes are optional, but if you don't provide any entries you will have to do it later in code with drawer.setListViewSections(...)
.
Using GoogleNavigationDrawer in Java Code:
ViewGroup container = (ViewGroup) findViewById(R.id.container);
GoogleNavigationDrawer drawer = new GoogleNavigationDrawer(context);
// Here we are providing data to the adapter of the ListView
drawer.setListViewSections(new String[]{"Section A", "Section B"}, // Main sections
new String[]{"Settings"}, // Secondary sections
new int[]{R.drawable.ic_launcher}, // Main sections icon ids
null); // Secondary sections icon ids
// To work correctly, a DrawerLayout must be the only View in a ViewGroup
container.removeAllViews();
container.addView(drawer);
// Now we add the content to the drawer since the menu is already there.
// Also, DrawerLayout forces the contentView to be the first item. Otherwise, you can't click on the menu.
drawer.addView(contentView, 0);
GoogleNavigationDrawer extends DrawerLayout. This means you can use DrawerLayout methods and set a DrawerListener to it.
3. Handling selection, opening and closing of the menu:
As you cannot access the inner ListView to ensure encapsulation, additional methods have been provided so you can do it by code. This methods are:
public boolean isDrawerMenuOpen();
public void openDrawerMenu();
public void closeDrawerMenu();
Also, to handle section selections, a listener has been provided:
public void setOnNavigationSectionSelected(OnNavigationSectionSelected listener);
You can also easily tell the drawer to change your Activity title based on the selected section via this method:
public void setShouldChangeTitle(Activity activity, boolean shouldChangeTitle);
4. Customizing the inner ListView:
Finally, customization. The main XML attributes of the class are the following:
drawer:list_padding[Top, Bottom, Left, Right]="dimen"
drawer:drawer_gravity="start"
drawer:list_mainSectionsEntries="array"
drawer:list_secondarySectionsEntries="array"
drawer:list_mainSectionsDrawables="array"
drawer:list_secondarySectionsDrawables="array"
drawer:list_headerView="layout"
drawer:list_footerView="layout"
drawer:list_headerClickable="boolean" (default is true)
drawer:list_footerClickable="boolean" (default is true)
drawer:list_secondarySectionsCheckable="boolean" (default is true)
drawer:list_mainSectionsBackground="drawable"
drawer:list_secondarySectionsBackground="drawable"
drawer:list_width="dimension"
drawer:list_background="drawable|color"
drawer:list_[main|secondary]_divider="drawable|color"
drawer:list_[main|secondary]_divider_height="dimension"
Example of arrays in arrays.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="navigation_main_sections">
<item>Home</item>
<item>Some Other</item>
</string-array>
<string-array name="navigation_secondary_sections">
<item>Settings</item>
<item>Info</item>
</string-array>
<array name="drawable_ids">
<item>@drawable/ic_home</item>
<item>@drawable/ic_other</item>
</array>
</resources>
Also, both icon drawables and backgrounds should have checked states to keep them consistent with the rest of the library:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/ic_on"></item>
<item android:drawable="@drawable/ic_off"></item>
</selector>
All these attributes can also be set by code.
License:
This library is licensed under Apachev2:
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
This means you can use the library in whatever way you want and also I take no responsibility of what it could do (thermo-nuclear explosions and such).
Anyway, it would be really nice of you if you could give this library a line in some "About" section in your app.
*Note that all licence references and agreements mentioned in the GoogleNavigationDrawerMenu README section above
are relevant to that project's source code only.