您的位置:首页 > 移动开发 > Android开发

Android功能之第三方AndroidResideMenu侧滑菜单

2015-10-19 21:21 267 查看
仿 Dribbble 的边栏菜单

项目地址:https://github.com/SpecialCyCi/AndroidResideMenu

库工程、Demo地址:http://pan.baidu.com/s/1ntBz04x



DEMO

本代码即是DEMO,您可以下载后选择您喜欢的IDE运行。SDK版本建议使用4.0以上

Version Migration

从 v1.0, v1.1, v1.2, v1.3 升级到 v1.4

如果你开启了手势滑动,你需要替换被依附的 Activity 里 dispatchTouchEvent() 代码

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


Requirements

运行在 Android 2.3 +

Installation

Gradle

repositories {
mavenCentral()
}
dependencies {
compile 'com.specyci:residemenu:1.6+'
}


Other

直接导入ResideMenu项目并作为依赖项目

例子:project.properties文件中

target=android-17
android.library.reference.1=../ResideMenu


or 直接合并到您的项目之中

复制src/com/special/ResideMenu下的所有代码到您的项目相应位置

复制libs/nineoldandroids-library-2.4.0.jar到您项目libs/下

复制res/drawable-hdpi/shadow.9.png到您的项目相应位置

复制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,  ResideMenu.DIRECTION_LEFT); // or  ResideMenu.DIRECTION_RIGHT
}


如果您需要使用手势滑动开启/关闭菜单,请复写activity的dispatchTouchEvent(),代码如下

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


在某些场景下,手势滑动开启/关闭菜单可能与您的某些控件产生冲突,例如viewpager,这时您可以把viewpager添加到ignored view.请参见下节Ignored Views

开启/关闭菜单 open or close menu

resideMenu.openMenu(ResideMenu.DIRECTION_LEFT); // or ResideMenu.DIRECTION_RIGHT
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();
}
};


禁止手势操作某个菜单方向

resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT);


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操作的区域就不允许用手势滑动操作菜单.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息