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() 代码
Requirements
运行在 Android 2.3 +
Installation
Gradle
Other
直接导入ResideMenu项目并作为依赖项目
例子:project.properties文件中
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()中
如果您需要使用手势滑动开启/关闭菜单,请复写activity的dispatchTouchEvent(),代码如下
在某些场景下,手势滑动开启/关闭菜单可能与您的某些控件产生冲突,例如viewpager,这时您可以把viewpager添加到ignored view.请参见下节Ignored Views
开启/关闭菜单 open or close menu
监听菜单状态
禁止手势操作某个菜单方向
Ignored Views
在某些场景下,手势滑动开启/关闭菜单可能与您的某些控件产生冲突,例如viewpager,这时您可以把viewpager添加到ignored view.
这样子在ignored_view操作的区域就不允许用手势滑动操作菜单.
项目地址: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操作的区域就不允许用手势滑动操作菜单.
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories