效果图:

DEMO

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

Version Migration

从 v1.0v1.1v1.2v1.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项目并作为依赖项目
例子

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

  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,  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操作的区域就不允许用手势滑动操作菜单.

源码下载:

https://github.com/SpecialCyCi/AndroidResideMenu

 

今日推荐(三)AndroidResideMenu类似QQ侧滑效果的更多相关文章

  1. android开发学习 ------- 仿QQ侧滑效果的实现

    需要做一个仿QQ侧滑删除的一个效果: 一开始是毫无头绪,百度找思路,找到  https://blog.csdn.net/xiaxiazaizai01/article/details/53036994  ...

  2. 类似QQ侧滑菜单功能实现

    之前的那文章简单实现了菜单侧拉功能,但是做不到像QQ那样导航条和tabBar一起移动...之后在网上找资料,有了思路,就自个写了个demo试试水. 先创建QHLMainController控制器,并把 ...

  3. Android开源框架之SwipeListView导入及模拟QQ侧滑

    SwipeListView是Github上的一个开源框架,地址:https://github.com/47deg/android-swipelistview SwipeListView was bor ...

  4. 使用Design包实现QQ动画侧滑效果和滑动菜单导航

    Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...

  5. 再造 “手机QQ” 侧滑菜单(三)——视图联动

    代码示例:https://github.com/johnlui/SwiftSideslipLikeQQ 本 文中,我们将一起使用 UINavigationController 来管理主视图,并实现点击 ...

  6. WinForm实现类似QQ停靠,显示隐藏过程添加特效效果

    原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...

  7. 使用plupload做一个类似qq邮箱附件上传的效果

    公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可 ...

  8. 实现类似QQ的折叠效果

    //  主要核心是点击自定义header来展开和收起每一组里面的cell,模型里面应该有isShow此属性来记录开展还是收起. //  ViewController.m//  实现类似QQ的折叠效果/ ...

  9. winform-实现类似QQ停靠桌面上边缘隐藏的效果

    //实现类似QQ停靠桌面上边缘隐藏的效果! private void timer1_Tick(object sender, EventArgs e) { System.Drawing.Point pp ...

随机推荐

  1. ie8 background css没有显示?——都是空格惹的祸

    ie8 background css没有显示?——都是空格惹的祸

  2. php多条件组合查询

    1. 通过表单把查询条件提交到php文件中,在文件中以post的形式得到传送过来的条件. 2. 把传过来的查询条件赋给变量. 3. 判断如果查询条件非空,则拼接查询sql. 大体如下: 1. < ...

  3. js两个时间相减

    平常总会遇到需要算两个日期之间是多少天,以下是使用JavaScript算时间差多少天的: // 给日期类对象添加日期差方法,返回日期与diff参数日期的时间差,单位为天 Date.prototype. ...

  4. sqlserver cte递归向上统计

    数据字典如下

  5. 排他锁Lock

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 【Java】Java垃圾回收机制

    Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给 ...

  7. 一个Java对象到底占多大内存

    最近在读<深入理解Java虚拟机>,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好 ...

  8. BZOJ 1059 [ZJOI2007]矩阵游戏

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2707  Solved: 1322[Submit][Stat ...

  9. Qt入门(12)——Qt国际化

    应用的国际化就是使应用成为能被非本国的人使用的过程.有的情况下,国际化很简单,例如,使一个US应用可被Australian或者British用户理解,工作可能少于几个拼写修正.但是使一个US应用可以被 ...

  10. 保留n位四舍五入小数

    一:可选择保留位数,注释很解释的很详细,上图 二:全部代码 using System; using System.Collections.Generic; using System.Component ...