MenuDrawer的使用
---恢复内容开始---
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的使用的更多相关文章
- 【开源项目5】测滑菜单MenuDrawer的使用以及解析
在安卓中左右侧滑菜单的使用用的比ios多得多,可能是谷歌带的头吧,几乎所有的谷歌应用都有侧滑菜单.谷歌没有开放这个源码,在一个成熟的开源代码出现之前,大家都是各自为战,偶尔能看到一个勉强实现了的.Me ...
- Android开源--MenuDrawer
开放的源地址:https://github.com/SimonVT/android-menudrawer 简单介绍:menudrawer是跟sliderMenu差点儿相同的一种框架,常被应用做设置界面 ...
- Android滑动菜单使用(MenuDrawer和SlidingMenu)
项目地址: https://github.com/gokhanakkurt/android-menudrawer https://github.com/jfeinstein10/SlidingMe ...
- 【开源项目6】介绍MenuDrawer这个牛x的控件,实现左右出菜单,上下出菜单
现在很多应用都很潇洒的从左边屏幕手势一划出个左边的隐藏菜单,右边一划出个隐藏菜单,上边一划出个隐藏菜单,下边一划出个隐藏菜单.或者像android的API16左右的激活列表项的功能.很多人肯定都很着迷 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- android 官方DrawerLayout的介绍和使用
南尘:爱编程,爱安卓,每天进步一点点. drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出 ...
- Android高手速成--第一部分 个性化控件(View)
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- 据说年薪30万的Android程序员必须知道的帖子
Android中国开发精英 目前包括: Android开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.G ...
- Android开源项目分类汇总
目前包括: Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...
随机推荐
- iterator迭代器的使用
部分摘自C++ Primer: 所有的标准库容器类都定义了相应的iterator类型,如vector:vector<int>::iterator iter; 这条语句定义了一个名为iter ...
- ios开发中加载的image无法显示
昨天遇到一个较奇葩的问题,imageName加载的图片显示不出来,网上查了好多资料还是没找到解决的方法: 之前图片是放在项目中SupportingFiles文件下的,怎么加载都能显示图片,于是将图片拿 ...
- OSPF + LVS ,突破LVS瓶颈 (转)
突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) 前言 架构简图 架构优势 部署方法 1.硬件资源准备 2.三层设备OSPF配置 3.LVS调度机的OSPF配置 a.安装软路由软件q ...
- Linux 信号量同步编程
前一篇文章概述了Linux 系统中信号量互斥编程,这篇文章正好是前一篇的姊妹篇----信号量同步.说它们是姊妹篇是因为它们都是利用了内核的信号量机制实现了进程间的通信.因为两者所解决的问题不同,因此它 ...
- CSS3中的background-size(对响应性图片等比例缩放)
background-size的基本属性 background-size: 可以设定背景图像的尺寸,该属性是css3中的,在移动端使用的地方很多,比如最常见的地方在做响应性布局的时候,比如之前做的项目 ...
- WPF 进度条
//Create a Delegate that matches the Signature of the ProgressBar's SetValue method private delegate ...
- id类型
id类型 在Objective-C 中,id 类型是一个独特的数据类型.在概念上,类似Java 的Object 类,可以转换为任何数据类型.换句话说,id 类型的变量可以存放任何数据类型的对象.在内部 ...
- vc2010配置opencv2.4.4库(图文 转)
VC 2010下安装OpenCV2.4.4 说明: 安装平台:32位XP,VS2010: OpenCV 2.4.4不支持VC 6.0: 网上有很多用CMake编译OpenCV的安装教程,这 ...
- Debug和Release之本质区别
转自Debug和Release之本质区别 Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发 ...
- 如何打造一款五星级的 APP ?
移动互联网大潮来袭!据统计,2015 年平均每天有 1000 个新的应用上架,而这些应用的现状可以说是鱼龙混杂,同是每个人的眼光.品味.意识和利益都不同,因此每人眼中的应用也是不同的.在巨大的市场竞争 ...