You can easily add awesome animated context menu to your app.

Overview

Android Arsenal Yalantis

ContextMenu

You can easily add awesome animated context menu to your app.

Check this project on dribbble

Check this project on Behance

Usage:

For a working implementation, have a look at the app module

1. Clone repository and add sources into your project or use Gradle:

Add it in your root build.gradle at the end of repositories:

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Add the dependency

	dependencies {
	        implementation 'com.github.Yalantis:Context-Menu.Android:1.1.4'
	}

2. Create list of MenuObject, which consists of icon or icon and description.

You can use any drawable, resource, bitmap, color as image:

    menuObject.drawable = ...
    menuObject.setResourceValue(...)
    menuObject.setBitmapValue(...)
    menuObject.setColorValue(...)

You can set image ScaleType:

    menuObject.scaleType = ScaleType.FIT_XY

You can use any resource, drawable, color as background:

    menuObject.setBgResourceValue(...)
    menuObject.setBgDrawable(...)
    menuObject.setBgColorValue(...)

Now You can easily add text appearance style for menu titles:

	In your project styles create style for text appearance
	(For better visual effect extend it from TextView.DefaultStyle):
	
	<style name="TextViewStyle" parent="TextView.DefaultStyle">
        	<item name="android:textStyle">italic|bold</item>
        	<item name="android:textColor">#26D0EB</item>
	</style>

	And set it's id to your MenuObject :	
    
        val bitmapDrawable = BitmapDrawable(
                resources,
                BitmapFactory.decodeResource(resources, R.drawable.icn_3)
        )

        val menuObject = MenuObject("Add to friends").apply {
            drawable = bitmapDrawable
            menuTextAppearanceStyle = R.style.TextViewStyle
        }

You can use any color as text color:

    menuObject.textColor = ...

You can set any color as divider color:

    menuObject.dividerColor = ...

Example:

    val close = MenuObject().apply { setResourceValue(R.drawable.icn_close) }

    val send = MenuObject("Send message").apply { setResourceValue(R.drawable.icn_1) }
    
    val addFriend = MenuObject("Add to friends").apply {
            drawable = BitmapDrawable(
                    resources,
                    BitmapFactory.decodeResource(resources, R.drawable.icn_3)
            )
    }

    val menuObjects = mutableListOf<MenuObject>().apply {
            add(close)
            add(send)
            add(addFriend)
    }

3. Create newInstance of ContextMenuDialogFragment, which received MenuParams object.

    val menuParams = MenuParams(
    	actionBarSize = resources.getDimension(R.dimen.tool_bar_height).toInt(),
    	menuObjects = getMenuObjects(),
    	isClosableOutside = false
    	// set other settings to meet your needs
    )
    
    // If you want to change the side you need to add 'gravity' parameter,
    // by default it is MenuGravity.END.
    
    // For example:
    
    val menuParams = MenuParams(
    	actionBarSize = resources.getDimension(R.dimen.tool_bar_height).toInt(),
    	menuObjects = getMenuObjects(),
    	isClosableOutside = false,
    	gravity = MenuGravity.START
    )
    
    val contextMenuDialogFragment = ContextMenuDialogFragment.newInstance(menuParams)

4. Set menu with button, which will open ContextMenuDialogFragment.

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        item?.let {
            when (it.itemId) {
                R.id.context_menu -> {
                    showContextMenuDialogFragment()
                }
            }
        }

        return super.onOptionsItemSelected(item)
    }

5. Add menu item listeners.

    contextMenuDialogFragment = menuItemClickListener = { view, position ->
    	// do something here
    }
	    
    contextMenuDialogFragment = menuItemLongClickListener = { view, position ->
    	// do something here
    }

Customization:

For better experience menu item size should be equal to ActionBar height.

newInstance of ContextMenuDialogFragment receives MenuParams object that has the fields:

menuObjects - list of MenuObject objects,

animationDelay - delay in millis after fragment opening and before closing, which will make animation smoother on slow devices,

animationDuration - duration of every piece of animation in millis,

isClosableOutside - if menu can be closed on touch to non-button area,

isFitSystemWindows - if true, then the default implementation of fitSystemWindows(Rect) will be executed,

isClipToPadding - true to clip children to the padding of the group, false otherwise.

The last two parameters may be useful if you use Translucent parameters in your theme:

    <item name="android:windowTranslucentStatus">true</item>

To stay Context Menu below Status Bar set fitSystemWindows to true and clipToPadding to false.

Compatibility

  • Android KitKat 4.4+

Changelog

Version: 1.1.4

  • added background color animation

Version: 1.1.2

  • added animation on close outside menu

Version: 1.1.1

  • bug with menuObject.textColor was fixed

Version: 1.1.0

  • library rewrited on Kotlin
  • added rtl support
  • added gravity parameter for MenuParams

Version: 1.0.8

  • added transparent menu background support
  • dependencies actualized

Version: 1.0.7

  • Text in menu now also clickable
  • Support libs and gradle updated

Version: 1.0.6

  • com.android.tools.build:gradle:1.5.0
  • Support libs and sdk updated to 23

Version: 1.0.5

  • Fixed setClosableOutside issue.
  • Fixed setAnimationDuration doesn´t work for open event issue.
  • Fixed menu item listener setting mechanism. It can be not activity but any class that implements listeners now. Issue. Attention! You have to set listeners to the context fragment manually. Check block 5 in the Usage.

Version: 1.0.4

  • Old ContextMenuDialogFragment newInstance methods are deprecated. Use new universal one that received MenuParams.
  • Added possibility to dismiss menu by clicking on non-button area. See MenuParams.setClosableOutside(boolean).

Version: 1.0.3

  • Added menu text appearence style. (Note: other text style methods are deprecated).

Version: 1.0.2

  • Changed MenuObject constructors. Image setting is moved to methods
  • Added styling of MenuObject image, background, text color, divider color
  • Added possibility to interact with translucent Status Bar

Version: 1.0.1

  • Added OnMenuItemLongClickListener (usage: the same as OnMenuItemClickListener, check sample app)
  • Renamed:
com.yalantis.contextmenu.lib.ContextMenuDialogFragment.ItemClickListener ->
com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener

com.yalantis.contextmenu.lib.ContextMenuDialogFragment.ItemClickListener.onItemClick(...) ->
com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener.onMenuItemClick(...)

Version: 1.0

  • Pilot version

Let us know!

We’d be really happy if you sent us links to your projects where you use our component. Just send an email to [email protected] And do let us know if you have any questions or suggestion regarding the animation.

P.S. We’re going to publish more awesomeness wrapped in code and a tutorial on how to make UI for Android (iOS) better than better. Stay tuned!

License

Copyright 2019, Yalantis

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.
Comments
  • how can i change position dialog in left side ?

    how can i change position dialog in left side ?

    hi...i used your library and that was awesome... but my question is, can i customize the dialog position to the left side ?

    thanks and best regards....

    enhancement 
    opened by joShinichi 5
  • Failed to resolve: com.yalantis:contextmenu:1.0.2

    Failed to resolve: com.yalantis:contextmenu:1.0.2

    opened by vipulasri 5
  • onMenuItemClick - Another Activity

    onMenuItemClick - Another Activity

    Hello PenzK and others, LOVE the Context Menu!! I read a previous issue #31 and having a similar issue with the onMenuItemClick, I cannot wrap my head around getting past why I cannot click on the menu item and go to another activity. I read the Check Block 5, but confused where I need to add this (going to use intent) for each menu item. Do I add in Main Activity or the ContextMenuDialogFragment?

    Penzk stated to set listeners to the context fragment manually and view Check Block 5 (see below). Where it states below, "...public void onMenuItemClick(View clickedView, int position) { //Do something here" is this the area I should put my intents?

    From Github Check Block 5 it shows Main Activity below:

    * Implement OnMenuItemClickListener interface with onMenuItemClick method.*

    public class MainActivity extends ActionBarActivity implements OnMenuItemClickListener … @Override public void onMenuItemClick(View clickedView, int position) { //Do something here } … mMenuDialogFragment.setItemClickListener(this);

    Any additional guidance is GREATLY appreciated. Thank you for your time.

    opened by TechTycoon 4
  • how  i add link on MenuObject

    how i add link on MenuObject

    how i add link on MenuObject

    itry this but not work

    
     private List<MenuObject> getMenuObjects() {
    
            List<MenuObject> menuObjects = new ArrayList<>();
            MenuObject close = new MenuObject();
            close.setResource(R.drawable.icn_close);
            MenuObject send = new MenuObject("Send message");
            send.setResource(R.drawable.icn_1);
            mXWalkView.loadUrl("http://www.newsweek.com/us");
            MenuObject like = new MenuObject("Like profile");
            Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.icn_2);
            mXWalkView.loadUrl("http://www.newsweek.com/us");
            like.setBitmap(b);
            MenuObject addFr = new MenuObject("Add to friends");
            BitmapDrawable bd = new BitmapDrawable(getResources(),
                    BitmapFactory.decodeResource(getResources(), R.drawable.icn_3));
            addFr.setDrawable(bd);
            MenuObject addFav = new MenuObject("Add to favorites");
            addFav.setResource(R.drawable.icn_4);
            mXWalkView.loadUrl("http://www.newsweek.com/game");
            MenuObject block = new MenuObject("Block user");
            block.setResource(R.drawable.icn_5);
    
            menuObjects.add(close);
            menuObjects.add(send);
            menuObjects.add(like);
            menuObjects.add(addFr);
            menuObjects.add(addFav);
            menuObjects.add(block);
            return menuObjects;
        }
    
    
    opened by sapq 3
  • how can I disable few menu options

    how can I disable few menu options

    Hi,

    I have applied this menu to list items and based on the type of list item the options varies ... so option 4 for list item1 may not be same for list item2

    What is the best way to deal with this ? Can I disable some menu options (so user cannot click them .... like they are not applicable for that case) Thanks in advance :)

    opened by swetakadam 3
  • Crash

    Crash

    Hi, I have this crash report :

    Exception java.lang.IncompatibleClassChangeError: Class 'java.lang.String' does not implement interface 'java.util.List' in call to 'java.lang.Object java.util.List.get(int)' (declaration of 'com.yalantis.contextmenu.lib.MenuAdapter' appears in /data/app/com.pomfy-1/split_lib_dependencies_apk.apk)

    com.yalantis.contextmenu.lib.MenuAdapter.setViews (MenuAdapter.java:72) com.yalantis.contextmenu.lib.MenuAdapter. (MenuAdapter.java:49) com.yalantis.contextmenu.lib.ContextMenuDialogFragment.initDropDownMenuAdapter (ContextMenuDialogFragment.java:130) com.yalantis.contextmenu.lib.ContextMenuDialogFragment.onCreateView (ContextMenuDialogFragment.java:102) android.support.v4.app.Fragment.performCreateView (Fragment.java:2192) android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1299) android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1528) android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1595) android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:758) android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2363) android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2149) android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps (FragmentManager.java:2103) android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2013) android.support.v4.app.FragmentManagerImpl$1.run (FragmentManager.java:710) android.os.Handler.handleCallback (Handler.java:751) android.os.Handler.dispatchMessage (Handler.java:95) android.os.Looper.loop (Looper.java:154) android.app.ActivityThread.main (ActivityThread.java:6290) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)

    opened by MS893 3
  • Fragment already added: ContextMenuDialogFragment

    Fragment already added: ContextMenuDialogFragment

    We are getting this error any ideas?

    Fatal Exception: java.lang.IllegalStateException Fragment already added: ContextMenuDialogFragment{1e2785d #0 ContextMenuDialogFragment}

    opened by BaranBerk 3
  • Change background color of each item

    Change background color of each item

    Hi Thanks for your wonderful tutorial. I have 3 transparent images and want to set a background color of each item. How can I achieve that in your library ?

    opened by deepakcipl 3
  • onMenuItemClick is not working in fragments

    onMenuItemClick is not working in fragments

    Hi, Thanks for your wonderful code. I implement your code in fragment instead of activity. Everything is working fine but listeners are not working in fragment.

    public class DinningFragment extends Fragment implements OnMenuItemClickListener{

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_dinning, container, false);

    } }

    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.settings_menu, menu); this.menu = menu; super.onCreateOptionsMenu(menu, inflater); }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.context_menu) {
            if (fragmentManager.findFragmentByTag(ContextMenuDialogFragment.TAG) == null) {
                mMenuDialogFragment.show(fragmentManager, ContextMenuDialogFragment.TAG);
            }
    
        }
        return super.onOptionsItemSelected(item);
    }
    

    @Override public void onMenuItemClick(View clickedView, int position) { MenuItem item = menu.findItem(R.id.context_menu); Toast.makeText(this, "Clicked on position: " + position, Toast.LENGTH_SHORT).show(); } } Above is my code. I do not receive call in onMenuItemClick.

    Please help!!

    opened by deepakcipl 3
  • Option to close menu when user touches the darkened area.

    Option to close menu when user touches the darkened area.

    There should be an option to close the menu when the user touches the darkened area since that is the usual behavior for interfaces like this.

    An option should be added with the default value of false to keep backwards compatibility.

    opened by graphnode 3
  • java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

    Hello! I found a bug. After I closed context-menu (a button for close) and before menu will close if I tap on the home button- the application crash. This problem on the context-menu side. Thanks!

    opened by artests87 2
  • Update project

    Update project

    • Update gradle version
    • Fix gradle issues
    • Update compileSdkVersion
    • Update targetSdkVersion
    • Update buildToolsVersion
    • Migrate to AndroidX
    • Migrate Kotlin synthetics to ViewBinding
    opened by dmytro1morozov 0
  • BUG after updating librairy

    BUG after updating librairy

    With the last update (1.1.4), the (old) sample is not working anymore. I'm using Java, not Kotlin, so I don't know how to use the new version... Help !

    opened by MS893 0
  • How to use in java: setMenuItemClickListener?

    How to use in java: setMenuItemClickListener?

    How I can implement menu item click on java? Which parameter type I should provide to setMenuItemClickListener method

    ContextMenuDialogFragment contextMenuDialogFragment = ContextMenuDialogFragment.newInstance(menuParams);
    contextMenuDialogFragment.setMenuItemClickListener(???);
    

    He show me the tint:

    Required type: Function2

    What is it?

    If I try to provide this with implemented: MenuItem.OnMenuItemClickListener interface, I get such error:

    Required type:
    Function2
    Provided:
    OnMenuItemClickListener
    
    opened by panovvitalik 2
  • how i use with webview

    how i use with webview

    i try to use with webview

    but not open

    
    import android.annotation.SuppressLint;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.widget.SwipeRefreshLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.webkit.ValueCallback;
    import android.widget.FrameLayout;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.yalantis.contextmenu.lib.ContextMenuDialogFragment;
    import com.yalantis.contextmenu.lib.MenuObject;
    import com.yalantis.contextmenu.lib.MenuParams;
    import com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener;
    import com.yalantis.contextmenu.lib.interfaces.OnMenuItemLongClickListener;
    
    import org.xwalk.core.XWalkPreferences;
    import org.xwalk.core.XWalkResourceClient;
    import org.xwalk.core.XWalkUIClient;
    import org.xwalk.core.XWalkView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import static com.github.crazyorr.embeddedcrosswalk.R.string.url;
    public class MainActivity extends AppCompatActivity implements OnMenuItemClickListener, OnMenuItemLongClickListener {
    
        private XWalkView mXWalkView;
        private SwipeRefreshLayout swipe;
        private ProgressBar progressBar;
        private ContextMenuDialogFragment mMenuDialogFragment;
        private FragmentManager fragmentManager;
    
    
    
        @SuppressLint("SetJavaScriptEnabled")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initToolbar();
            initMenuFragment();
            progressBar = (ProgressBar) findViewById(R.id.ProgressBar);
            swipe= (SwipeRefreshLayout) findViewById(R.id.swipe);
            swipe.setColorSchemeResources(R.color.orange, R.color.green, R.color.blue, R.color.purple);
            swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    
                @Override
                public void onRefresh()
                {mXWalkView.reload(url);}
            });
    
            loadweb();
        }
    
    
        public void loadweb(){
    
            mXWalkView = (XWalkView) findViewById(R.id.webview);
            mXWalkView.setResourceClient(new ResourceClient(mXWalkView));
            mXWalkView.setUIClient(new XWalkUIClient(mXWalkView) {
                @Override
                public void onPageLoadStarted(XWalkView view, String url) {
                    progressBar.setVisibility(ProgressBar.VISIBLE);
                }
    
                @Override
                public void onPageLoadStopped(XWalkView view, String url, XWalkUIClient.LoadStatus status) {
                    progressBar.setVisibility(view.GONE);
                    swipe.setRefreshing(false);
                }
            });
            XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
            mXWalkView.getSettings().setJavaScriptEnabled(true);
            mXWalkView.loadUrl("http:google.com");
        }
    
        private void initToolbar() {
            Toolbar mToolbar = (Toolbar) findViewById(R.id.my_toolbar);
            setSupportActionBar(mToolbar);
            if (getSupportActionBar() != null) {
                getSupportActionBar().setHomeButtonEnabled(true);
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setDisplayShowTitleEnabled(false);
            }
            mToolbar.setNavigationIcon(R.drawable.btn_back);
            mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
    
                }
            });
        }
    
    
        private void initMenuFragment() {
            MenuParams menuParams = new MenuParams();
            menuParams.setActionBarSize((int) getResources().getDimension(R.dimen.tool_bar_height));
            menuParams.setMenuObjects(getMenuObjects());
            menuParams.setClosableOutside(false);
            mMenuDialogFragment = ContextMenuDialogFragment.newInstance(menuParams);
            mMenuDialogFragment.setItemClickListener(this);
            mMenuDialogFragment.setItemLongClickListener(this);
        }
    
        private List<MenuObject> getMenuObjects() {
    
            List<MenuObject> menuObjects = new ArrayList<>();
            MenuObject close = new MenuObject();
            close.setResource(R.drawable.icn_close);
            MenuObject send = new MenuObject("Send message");
            send.setResource(R.drawable.icn_1);
            MenuObject like = new MenuObject("Like profile");
            Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.icn_2);
            like.setBitmap(b);
            MenuObject addFr = new MenuObject("Add to friends");
            BitmapDrawable bd = new BitmapDrawable(getResources(),
                    BitmapFactory.decodeResource(getResources(), R.drawable.icn_3));
            addFr.setDrawable(bd);
            MenuObject addFav = new MenuObject("Add to favorites");
            addFav.setResource(R.drawable.icn_4);
            MenuObject block = new MenuObject("Block user");
            block.setResource(R.drawable.icn_5);
    
            menuObjects.add(close);
            menuObjects.add(send);
            menuObjects.add(like);
            menuObjects.add(addFr);
            menuObjects.add(addFav);
            menuObjects.add(block);
            return menuObjects;
        }
    
    
    
        class ResourceClient extends XWalkResourceClient {
    
            public ResourceClient(XWalkView xwalkView) {
                super(xwalkView);
            }
    
            public void onProgressChanged(XWalkView view, int progressInPercent){
    
                progressBar.setProgress(progressInPercent);
    
    
                if (progressInPercent == 100){
                }
                super.onProgressChanged(view, progressInPercent);
    
    
    
            }
    
    
        }
    
    
    
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return super.onCreateOptionsMenu(menu);
        }
    
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.context_menu:
                    if (fragmentManager.findFragmentByTag(ContextMenuDialogFragment.TAG) == null) {
                        mMenuDialogFragment.show(fragmentManager, ContextMenuDialogFragment.TAG);
                    }
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
    
    
        @Override
        public void onMenuItemClick(View clickedView, int position) {
            Toast.makeText(this, "Clicked on position: " + position, Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onMenuItemLongClick(View clickedView, int position) {
            Toast.makeText(this, "Long clicked on position: " + position, Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onBackPressed() {
            mXWalkView.evaluateJavascript("onBackPressed()", new ValueCallback<String>() {
                @Override
                public void onReceiveValue(final String value) {
                    if (!Boolean.valueOf(value)) {
                        MainActivity.super.onBackPressed();
                    }
    
                }
            });
        }
    }
    
    opened by sapq 0
  • Long Press issue.

    Long Press issue.

    After click long press when user do finger out then context menu will be dismiss with animation starting. actually i want to know how to dismiss animation context menu with 3 second delay.

    opened by tariqul000 0
Releases(1.1.4)
Owner
Yalantis
Knowledge is power and the way to get power is by sharing knowledge. We are open source because this is a smart way to live, work and play.
Yalantis
🚀 A very customizable library that allows you to present menu items (from menu resource and/or other sources) to users as a bottom sheet.

SlidingUpMenu A library that allows you to present menu items (from menu resource and/or other sources) to users as a bottom sheet. Gradle Dependency

Rasheed Sulayman 26 Jul 17, 2022
Floating Action Menu for Android. Inspired by the Google Plus floating menu

android-floating-action-menu Floating Action Menu for Android. Inspired by the Google Plus floating menu. Demo Setup The simplest way to use this libr

Alessandro Crugnola 242 Nov 10, 2022
Classic Power Menu is a Power Menu Replacement for Android 11+

Classic Power Menu is a Power Menu Replacement for Android 11+, with the main aim being restoring power menu options (Device Controls & Quick Access Wallet) on Android 12.

Kieron Quinn 385 Dec 31, 2022
an animated circular menu for Android

CircularFloatingActionMenu An animated, customizable circular floating menu for Android, inspired by Path app. Getting Started Requirements API >= 15

Oğuz Bilgener 2.7k Dec 24, 2022
You can create awesome menus with bottom sheet experience in a few lines

You can create awesome menus with bottom sheet experience in a few lines

Mazen Rashed 19 Nov 1, 2022
Unobtainables - Add unobtainable blocks to the creative menu

unobtainables Add unobtainable blocks to the creative menu

Richie Bendall 2 Jan 9, 2022
A menu which can ... BOOM! - Android

BoomMenu 2.0.0 Comes Finally Approximately 8 months ago, I got an inspiration to creating something that can boom and show menu, which I named it Boom

Nightonke 5.8k Dec 27, 2022
A multicard menu that can open and close with animation on android

MultiCardMenu A multicard menu that can open and close with animation on android,require API level >= 11 Demo ##Usage <net.wujingchao.android.view.

null 562 Nov 10, 2022
An Android Library that allows users to pull down a menu and select different actions. It can be implemented inside ScrollView, GridView, ListView.

AndroidPullMenu AndroidPullMenu is an Open Source Android library that allows developers to easily create applications with pull menu. The aim of this

Armando TBA 181 Nov 29, 2022
An app that helps you create & remove WSA icon in the start menu

WSA Helper An application that allows you to manager WSA's icons in start menus

LSPosed 142 Dec 24, 2022
** A slide-out menu implementation, which allows users to navigate between views in your app.

MenuDrawer A slide-out menu implementation, which allows users to navigate between views in your app. Most commonly the menu is revealed by either dra

Simon Vig Therkildsen 2.6k Dec 8, 2022
Simple library which enable you to add a drawer(slide-out) navigation to your android application

SimpleSideDrawer is an android library to add a drawer navigation into your android application. This library has high affinity with other libraries l

null 217 Nov 25, 2022
Implementation of "Side Navigation" or "Fly-in app menu" pattern for Android (based on Google+ app)

Android SideNavigation Library Implementation of "Side Navigation" or "Fly-in app menu" pattern for Android (based on Google+ app). Description The Go

Evgeny Shishkin 319 Nov 25, 2022
Space Navigation is a library allowing easily integrate fully customizable Google Spaces like navigation to your app.

Space-Navigation-View Introduction Space Navigation is a library allowing easily integrate fully customizable Google [Spaces][1] like navigation to yo

Arman 2k Dec 23, 2022
Navigation menu for Android (based off Google+ app)

RibbonMenu Navigation menu for Android (based on Google+ app). Usage Menus are created in xml as normal, adding text and an icon. In the layout you wa

David Scott 487 Nov 24, 2022
Android-NewPopupMenu 3.9 0.0 Java is an android library to create popup menu with GoogleMusic app-like style.

Android-NewPopupMenu Android-NewPopupMenu is an android library to create popup menu with GoogleMusic app-like style. Requirements Tested with APIv4 H

u1aryz 159 Nov 21, 2022
Side menu with some categories to choose.

Side Menu Side menu with some categories to choose. Check this project on dribbble. Check this project on Behance. God bless Ukraine! Sample Sample &

Yalantis 5.2k Dec 23, 2022
imitate Tumblr's menu, dragging animations look like a snake

android-snake-menu imitate Tumblr's menu, dragging animations look like a snake unexpected episode I found another repository some time ago which impl

stone 586 Nov 10, 2022
:fire: The powerful and easiest way to implement modern material popup menu.

PowerMenu ?? The powerful and easiest way to implement modern material popup menu. PowerMenu can be fully customized and used for popup dialogs. Downl

Jaewoong Eum 1k Dec 29, 2022