類iOS7風格邊欄菜單:AndroidResideMenu

jopen 11年前發布 | 19K 次閱讀 Android開發 移動開發 AndroidResideMenu

ReisdeMenu 創意靈感來自于Dribbble1還有2,而這個是Android版的ResideMenu,在視覺效果上部分參考了iOS版的RESideMenu,并在此感謝以上作者的貢獻。

DEMO

本代碼即是DEMO,您可以下載后選擇您喜歡的IDE運行。SDK版本建議使用4.0以上

Requirements

運行在 Android 2.3 +

Installation

如果您需要將ResideMenu使用在您的項目中,您需要完成以下步驟

1. 復制src/com/special/ResideMenu下的所有代碼到您的項目相應位置

2. 復制libs/nineoldandroids-library-2.4.0.jar到您項目libs/下

3. 復制res/drawable-hdpi/shadow.9.png到您的項目相應位置

4. 復制res/layout/residemenu.xml 和 residemenu_item.xml到您的項目相應位置

Usage

寫在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);
        }

如果您需要使用手勢滑動開啟/關閉菜單,請復寫activity的dispatchTouchEvent(),代碼如下

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

在某些場景下,手勢滑動開啟/關閉菜單可能與您的某些控件產生沖突,例如viewpager,這時您可以把viewpager添加到ignored view.請參見下節Ignored Views

開啟/關閉菜單 open or close menu

resideMenu.openMenu();
resideMenu.closeMenu();

監聽菜單狀態

    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();
        }
    };

Ignored Views

在某些場景下,手勢滑動開啟/關閉菜單可能與您的某些控件產生沖突,例如viewpager,這時您可以把viewpager添加到ignored view.

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

這樣子在ignored_view操作的區域就不允許用手勢滑動操作菜單.

項目主頁:http://www.baiduhome.net/lib/view/home/1387331406359

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!