MCPcopy Index your code
hub / github.com/SpecialCyCi/AndroidResideMenu

github.com/SpecialCyCi/AndroidResideMenu @1.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.6 ↗ · + Follow
81 symbols 167 edges 8 files 28 documented · 35%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AndroidResideMenu


中文说明请点击 这里

The idea of ResideMenu is from Dribble 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.

DEMO

This copy is the demo.

Version Migration

Upgrading to v1.4 from v1.3, v1.2, v1.1, v1.0

Duplicate the followed code in dispatchTouchEvent() of Activity, replace the old dispatchTouchEvent() code.

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return resideMenu.dispatchTouchEvent(ev);
    }

Requirements

Run in Android 2.3 +

Installation

  1. import ResideMenu project to your workspace.
  2. make it as a dependency library project to your main project.

( see example )

or

If you want to merge ResideMenu with your project, you should follow these steps.

  1. Copy all files from src/com/special/ResideMenu to your project.
  2. Copy libs/nineoldandroids-library-2.4.0.jar to your project’s corresponding path: libs/
  3. Copy res/drawable-hdpi/shadow.9.png to your project’s corresponding path: res/drawable-hdpi/
  4. Copy res/layout/residemenu.xml and residemenu_item.xml to your project’s corresponding path: res/layout

Usage

init ResideMenu: write these code in Activity onCreate()

        // attach to current activity;
        resideMenu = new ResideMenu(this);
        resideMenu.setBackground(R.drawable.menu_background);
        resideMenu.attachToActivity(this);

        // create menu items;
        String titles[] = { "Home", "Profile", "Calendar", "Settings" };
        int icon[] = { R.drawable.icon_home, R.drawable.icon_profile, R.drawable.icon_calendar, R.drawable.icon_settings };

        for (int i = 0; i < titles.length; i++){
            ResideMenuItem item = new ResideMenuItem(this, icon[i], titles[i]);
            item.setOnClickListener(this);
            resideMenu.addMenuItem(item,  ResideMenu.DIRECTION_LEFT); // or  ResideMenu.DIRECTION_RIGHT
        }

If you want to use slipping gesture to operate(lock/unlock) the menu, override this code in Acitivity dispatchTouchEvent() (please duplicate the followed code in dispatchTouchEvent() of Activity.

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return resideMenu.dispatchTouchEvent(ev);
    }

On some occasions, the slipping gesture function for locking/unlocking menu, may have conflicts with your widgets, such as viewpager. By then you can add the viewpager to ignored view, please refer to next chapter – Ignored Views.

open/close menu

resideMenu.openMenu(ResideMenu.DIRECTION_LEFT); // or ResideMenu.DIRECTION_RIGHT
resideMenu.closeMenu();

listen in the menu state

    resideMenu.setMenuListener(menuListener);
    private ResideMenu.OnMenuListener menuListener = new ResideMenu.OnMenuListener() {
        @Override
        public void openMenu() {
            Toast.makeText(mContext, "Menu is opened!", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void closeMenu() {
            Toast.makeText(mContext, "Menu is closed!", Toast.LENGTH_SHORT).show();
        }
    };

disable a swipe direction

  resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT);

Ignored Views

On some occasions, the slipping gesture function for locking/unlocking menu, may have conflicts with your widgets such as viewpager.By then you can add the viewpager to ignored view.

        // add gesture operation's ignored views
        FrameLayout ignored_view = (FrameLayout) findViewById(R.id.ignored_view);
        resideMenu.addIgnoredView(ignored_view);

So that in ignored view’s workplace, the slipping gesture will not be allowed to operate menu.

About me

A student from SCAU China.

Email: specialcyci#gmail.com

Extension points exported contracts — how you extend this code

OnMenuListener (Interface)
(no doc) [2 implementers]
ResideMenu/src/com/special/ResideMenu/ResideMenu.java

Core symbols most depended-on inside this repo

changeFragment
called by 5
ResideMenuDemo/src/com/special/ResideMenuDemo/MenuActivity.java
isOpened
called by 5
ResideMenu/src/com/special/ResideMenu/ResideMenu.java
addMenuItem
called by 4
ResideMenu/src/com/special/ResideMenu/ResideMenu.java
openMenu
called by 4
ResideMenu/src/com/special/ResideMenu/ResideMenu.java
initViews
called by 3
ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java
closeMenu
called by 3
ResideMenu/src/com/special/ResideMenu/ResideMenu.java
setScaleDirection
called by 3
ResideMenu/src/com/special/ResideMenu/ResideMenu.java
setTouchDisable
called by 2
ResideMenu/src/com/special/ResideMenu/TouchDisableView.java

Shape

Method 72
Class 8
Interface 1

Languages

Java100%

Modules by API surface

ResideMenu/src/com/special/ResideMenu/ResideMenu.java45 symbols
ResideMenuDemo/src/com/special/ResideMenuDemo/MenuActivity.java9 symbols
ResideMenu/src/com/special/ResideMenu/TouchDisableView.java9 symbols
ResideMenuDemo/src/com/special/ResideMenuDemo/CalendarFragment.java5 symbols
ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java5 symbols
ResideMenuDemo/src/com/special/ResideMenuDemo/HomeFragment.java4 symbols
ResideMenuDemo/src/com/special/ResideMenuDemo/SettingsFragment.java2 symbols
ResideMenuDemo/src/com/special/ResideMenuDemo/ProfileFragment.java2 symbols

For agents

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

⬇ download graph artifact