/ChromeMenu

⚡ An Android menu library from Chromium-Android. Touch, move and select in one gesture.

Primary LanguageJavaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

ChromeMenu

Download API

The menu from Chromium Android appmenu(Github Mirror). It can do this:

Example GIF

Notice the press, move, selection, up are finished in one gesture.

I love this design. It significantly improves the efficiency of using an app. So I dig into chromium, extract related code and pack them into this library.

Update: Recently, I found that getDragToOpenListener provides a similar effect.

Usage

  1. Install dependency

    • Jcenter: implementation 'xyz.aprildown:chrome-menu:0.1.1'
    • JitPack: implementation 'xyz.aprildown:ChromeMenu:0.1.1'
  2. Set up touch listener

    val handler = AppMenuHandler(activity, listener, R.menu.menu)
    val helper = AppMenuButtonHelper(handler)
    btn.setOnTouchListener(helper)

    listener is an AppMenuPropertiesDelegate interface or use its abstract version AbstractAppMenuPropertiesDelegate()

    You can define header and footer and hijack menu items after they are created through the listener.

  3. Check the sample for more customization.

More Usage

  • Change menu width

    Add this line to dimens.xml:

    <!-- 256dp is the original width -->
    <dimen name="cm_menu_width">258dp</dimen>

ChangeLog and Migration

  • 0.1.1

    • Pull changes from chromium
      • fffabbc: IPH : Set focus to highlighted menu item after opening app menu
      • ead7304: Add common colors in night- and some initial clean up on themes
    • Add proguard rules #1.
  • 0.1.0

    To set custom menu width, use cm_menu_width instead of the old menu_width.