码迷,mamicode.com
首页 > 其他好文 > 详细

MenuDrawer的使用

时间:2015-09-14 00:29:52      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

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

 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的使用

标签:

原文地址:http://www.cnblogs.com/chenli123/p/4805865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!