---恢复内容开始---

MenuDrawer框架是一个可以实现上下左右滑动的框架,在使用中可以在xml文件中配置也可以在java代码中实现效果的配置

可以以jar的形式或依赖的形式存在      用依赖的形式存在是方便修改MenuDrawer的源码

在xml中配置

<net.simonvt.menudrawer.OverlayDrawer   //以覆盖的形式出现   即在侧滑时侧滑菜单滑动主界面不会发生改变
        android:id="@+id/drawer"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent
        android:orientation="vertical"
        app:mdContentBackground="@color/interface_background"//  设置内容区的背景银色
        app:mdDrawOverlay="false"      
        app:mdDropShadowColor="#55000000"     //设置阴影部分的颜色
        app:mdDropShadowEnabled="true"    
        app:mdDropShadowSize="5dp"     //设置 阴影部分的长度
        app:mdMenuSize="304dp"        //设置侧滑栏的宽度
        app:mdPosition="right">   //设置是从界面的右边滑出
        <!--304dp-->

代码

mMenuDrawer = MenuDrawer.attach(MainActivity.this,MenuDrawer.Overlay, Position.RIGHT);// 设置出现方式   和位置
        mMenuDrawer.setContentView(R.layout.main_acivity);

mMenuDrawer.setMenuView(R.layout.main_menu);//设置侧滑菜单的布局   这里可以用fragment将布局替换调  替不替换就看你自己的思路
        mMenuDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_NONE);// 设置成不可滑动只可点击出现侧滑菜单     也可以设置其他

这个可以监听点击事件    mMenuDrawer.openMenu();
        mMenuDrawer.setDropShadow(R.drawable.shadow);// 设置阴影 渐变的绘图效果
        mMenuDrawer.setDropShadowSize(10);// 阴影长度
         mMenuDrawer.setMenuSize(size);//设置侧滑菜单出现的宽度
        mMenuDrawer.setMaxAnimationDuration(1000);

//这个方法比较重要
        mMenuDrawer.setOnDrawerStateChangeListener(this);

@Override
    public void onDrawerSlide(float openState, int arg1) {

}

// 状态改变
    @Override
    public void onDrawerStateChange(int outData, int newData) {

}

openState是0.0---1.0的数值变化

当侧滑完全打开时为1.0   完全关闭时0.0

newStatr是int值当完全关闭时为0,打开时为8(没弄明白,这个8是怎样出来的有时间再研究,如果有知道,求解,,,,,,)

在这个方法中我主要使用openState这个值来实现监听效果

例如有个效果  在点击条目时条目整体和侧滑菜单偏移

然后拉动侧滑菜单时整体条目随侧滑菜单来实现联动

这时这个openState值就比较重要了

这里我的实现方式是用到了 scrollBy()和openState值结合来实现的

//在这里比较不好搞定是:

在实现来侧滑并且侧滑时主界面不动的效果时,如果要求主界面和侧滑菜单的  listview都可以滑动且可点击时,这里需要修改下MenuDrawer的源码

(可以将MenuDrawer'作为依赖库    即源码加进来,)

在这里可以发现在MenuDrawer源码中有个  OverlayDrawer.java文件   由于选择的模式是覆盖,又想在覆盖时滑动主界面那么这里提供了修改的方法

在触摸事件判断是否拦截事件的方法  onInterceptTouchEvent(MotionEvent ev) 中的

562行  一般应该就是这行

if (isContentTouch(x, y)) {
                return true;
            }
        }

将这里的true修改为false

if (isContentTouch(x, y)) {
                return false;
            }
        }

即可实现那个比较牛逼的效果来.

完.

---恢复内容结束---

MenuDrawer的使用的更多相关文章

  1. 【开源项目5】测滑菜单MenuDrawer的使用以及解析

    在安卓中左右侧滑菜单的使用用的比ios多得多,可能是谷歌带的头吧,几乎所有的谷歌应用都有侧滑菜单.谷歌没有开放这个源码,在一个成熟的开源代码出现之前,大家都是各自为战,偶尔能看到一个勉强实现了的.Me ...

  2. Android开源--MenuDrawer

    开放的源地址:https://github.com/SimonVT/android-menudrawer 简单介绍:menudrawer是跟sliderMenu差点儿相同的一种框架,常被应用做设置界面 ...

  3. Android滑动菜单使用(MenuDrawer和SlidingMenu)

    项目地址: https://github.com/gokhanakkurt/android-menudrawer   https://github.com/jfeinstein10/SlidingMe ...

  4. 【开源项目6】介绍MenuDrawer这个牛x的控件,实现左右出菜单,上下出菜单

    现在很多应用都很潇洒的从左边屏幕手势一划出个左边的隐藏菜单,右边一划出个隐藏菜单,上边一划出个隐藏菜单,下边一划出个隐藏菜单.或者像android的API16左右的激活列表项的功能.很多人肯定都很着迷 ...

  5. 【转】GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...

  6. android 官方DrawerLayout的介绍和使用

    南尘:爱编程,爱安卓,每天进步一点点. drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出 ...

  7. Android高手速成--第一部分 个性化控件(View)

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  8. 据说年薪30万的Android程序员必须知道的帖子

    Android中国开发精英 目前包括: Android开源项目第一篇--个性化控件(View)篇       包括ListView.ActionBar.Menu.ViewPager.Gallery.G ...

  9. Android开源项目分类汇总

    目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

随机推荐

  1. linux命令行抓取网页快照-(xvfb+CutyCapt)

    目的: 在一台没有安装X-server的Debian服务器上实现命令行抓取网页快照 软件: xvfb(在命令行下实现对X-server的模拟,渲染图形进行缓存)-在没有安装X-Server的环境下提供 ...

  2. Linux 共享内存编程

    共享内存允许系统内两个或多个进程共享同一块内存空间,并且数据不用在客户进程和服务器进程间复制,因此共享内存是通信速度最快的一种IPC. 实现的机制简单描述如下:一个进程在系统中申请开辟了一块共享内存空 ...

  3. 取值对比ture of false加引号与不加引号的问题-----Bug笔记-160219

    一.默认情况,当属性值为布尔值类型的时候对比判断不用加引号<input type="radio" name="city" value="BeiJ ...

  4. C#程序中:如何删除xml文件中的节点、元素。

    C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...

  5. php 获取客户端IP地址

    /** * 获取真实IP地址 */ /* 在PHP中getenv(参数)函数是一个用于获取环境变量的函数,根据提供不同的参数可以获取不同的环境变量, getenv("REMOTE_ADDR& ...

  6. Python之简单的SMTP发送邮件详细教程附代码

      简介 Python发送邮件的教程本人在网站搜索的时候搜索出来了一大堆,但是都是说了一大堆原理然后就推出了实现代码,我测试用给出的代码进行发送邮件时都不成功,后面找了很久才找到原因,这都是没有一个详 ...

  7. 使用URLClassLoader类载入类实例

    Tomcat当中在接受到要调用的Servlet请求后,需要载入相应的Servlet类,然后创建Servlet类实例,从而调用Servlet类实例的service()方法 下面实例的场景,request ...

  8. 你一定要知道的关于Linux文件目录操作的12个常用命令

    写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操 ...

  9. spm使用之三spm应用实例

    spm 的init实际上是调用了grunt这个工具来实现一些交互式的提问和数据的获取. 看看npm就知道, npm有个命令叫init, 就是一样的交互式提问获取你要创建的nodejs的模块信息. sp ...

  10. 玩SSH,SFTP

    更改SFTP的本地路径,记得前面要加l哟,应该表示local的意思.如lls,lcd. 证书SSH更安全.就是多服务布置有些烦琐~~