MCPcopy Index your code
hub / github.com/DeweyReed/ChromeMenu

github.com/DeweyReed/ChromeMenu @0.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.2.0 ↗ · + Follow
288 symbols 613 edges 30 files 135 documented · 47%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

    • JitPack: implementation 'com.github.DeweyReed:ChromeMenu:0.2.0'
  2. Set up touch listener

    Kotlin 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:

    ```XML

    258dp ```

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.

Extension points exported contracts — how you extend this code

AppMenuPropertiesDelegate (Interface)
App Menu helper that handles hiding and showing menu items based on activity state. [3 implementers]
library/src/main/java/xyz/aprildown/chromemenu/AppMenuPropertiesDelegate.java
AppMenuButtonHelper (Interface)
A helper class for a menu button to decide when to show the app menu and forward touch events. Use {@link AppMenuHan [2 …
library/src/main/java/xyz/aprildown/chromemenu/AppMenuButtonHelper.java
AppMenuCoordinator (Interface)
A UI coordinator the app menu. [2 implementers]
library/src/main/java/xyz/aprildown/chromemenu/AppMenuCoordinator.java
AppMenuHandler (Interface)
Responsible for handling the creation, showing, hiding of the AppMenu and notifying the AppMenuObservers about these act [2 …
library/src/main/java/xyz/aprildown/chromemenu/AppMenuHandler.java
AppMenuClickHandler (Interface)
Interface to handle clicks and long-clicks on menu items. [2 implementers]
library/src/main/java/xyz/aprildown/chromemenu/AppMenuClickHandler.java

Core symbols most depended-on inside this repo

getItem
called by 10
library/src/main/java/xyz/aprildown/chromemenu/AppMenuAdapter.java
getItemId
called by 9
library/src/main/java/xyz/aprildown/chromemenu/AppMenuAdapter.java
getDrawable
called by 6
library/src/main/java/xyz/aprildown/chromemenu/ApiCompatibilityUtils.java
show
called by 5
library/src/main/java/xyz/aprildown/chromemenu/AppMenu.java
dismiss
called by 5
library/src/main/java/xyz/aprildown/chromemenu/AppMenu.java
isShowing
called by 5
library/src/main/java/xyz/aprildown/chromemenu/AppMenu.java
getListView
called by 5
library/src/main/java/xyz/aprildown/chromemenu/AppMenu.java
setAlpha
called by 5
library/src/main/java/xyz/aprildown/chromemenu/PulseDrawable.java

Shape

Method 249
Class 27
Interface 12

Languages

Java92%
Kotlin8%

Modules by API surface

library/src/main/java/xyz/aprildown/chromemenu/PulseDrawable.java40 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenuAdapter.java27 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenu.java26 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenuHandlerImpl.java22 symbols
app/src/main/java/xyz/aprildown/chromemenu/app/MainActivity.kt22 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenuPropertiesDelegate.java16 symbols
library/src/main/java/xyz/aprildown/chromemenu/AbstractAppMenuPropertiesDelegate.java16 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenuButtonHelperImpl.java11 symbols
library/src/main/java/xyz/aprildown/chromemenu/ApiCompatibilityUtils.java11 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenuHandler.java10 symbols
library/src/main/java/xyz/aprildown/chromemenu/AppMenuDragHelper.java10 symbols
library/src/main/java/xyz/aprildown/chromemenu/TextViewWithCompoundDrawables.java8 symbols

For agents

$ claude mcp add ChromeMenu \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact