SlidingMenu作为最常用到的几个开源项目之一,最初,这个是在IOS上有的,之后被应用到了android上,在google自己原生态的侧拉菜单NavigationDrawer没出现之前,这个效果已经被很多应用所使用。比如今日头条,网易新闻,人人客户端等等。

由于最近项目用到,所以把相关使用和配置记录下来。

Github上的下载地址为:下载地址

国外用到该库的应用APP:

  • Foursquare
  • LinkedIn
  • Zappos
  • Rdio
  • Evernote Food
  • Plume
  • VLC for Android
  • ESPN ScoreCenter
  • MLS MatchDay
  • 9GAG
  • Wunderlist 2
  • The Verge
  • MTG Familiar
  • Mantano Reader
  • Falcon Pro (BETA)
  • MW3 Barracks
使用方法:
一.首先导入SlidingMenu这个库文件
eclipse中的流程:菜单第一项  File --Import --选择库所在位置 导入
可以看到库的结构为:
 
你可以直接继承app这个包中的SlidingActivity,SlidingFragmentActivity,SlidingListActivity等这几个类去实现这个效果,
或则直接在你的项目中的主类文件中初始化SlidingMenu,并进行配置后使用。
在SlidingMenu类的源码中,
你可以看到,它实际上是继承了RelativeLayout之后去赋予你给定的layout布局,然后置于你项目的左侧或则右侧。
蛮多大神都是自己定义一个这样的VIEW自己去实现这个效果,这个库就是提供了一个方便的途径。
二.在你的项目中引入SlidingMenu这个库
eclipse中的流程:右击你的项目 -- Properties -- Android  -- Add  选择SlidingMenu库
注意:可能这时你的项目会出错或则运行时候出错,原因就是SlidingMenu库中已经带有了android-support-v4.jar这个官方架包,如果你在自己的项目中也带有这个架包的话,可能就会造成版本冲突,如果冲突了,你可以把自己项目中libs文件夹中的这个架包给删除了。
三.在你的项目中使用这个SlidingMenu
我喜欢把SlidingMenu自定义成一个类,之后去初始化,这样可以减少主要activity中的代码份量,维护起来会方便的。
用代码实现SlidingMenu这个控件:
[java] view plaincopy
  1. public SlidingMenu initSlidingMenu(Activity activity) {
  2. SlidingMenu localSlidingMenu = new SlidingMenu(activity);
  3. localSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT);//设置左右滑菜单
  4. localSlidingMenu.setTouchModeAbove(SlidingMenu.LEFT);//设置要使菜单滑动,触碰屏幕的范围
  5. //localSlidingMenu.setTouchModeBehind(SlidingMenu.RIGHT);
  6. localSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
  7. localSlidingMenu.setShadowDrawable(R.drawable.shadow);//设置阴影图片
  8. localSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//设置划出时主页面显示的剩余宽度
  9. <span style="white-space:pre">      </span>localSlidingMenu.setFadeEnabled(true);//设置滑动时菜单的是否渐变     <span style="white-space:pre">              </span>localSlidingMenu.setFadeDegree(0.35F);//<span style="font-family: Helvetica, arial, freesans, clean, sans-serif;">设置</span>滑动时的渐变程度
  10. localSlidingMenu.attachToActivity(activity, SlidingMenu.RIGHT);//使SlidingMenu附加在Activity右边
  11. //      localSlidingMenu.setBehindWidthRes(R.dimen.left_drawer_avatar_size);//设置SlidingMenu菜单的宽度
  12. localSlidingMenu.setMenu(R.layout.left_drawer_fragment);//设置menu的布局文件
  13. localSlidingMenu.toggle();//动态判断自动关闭或开启SlidingMenu
  14. localSlidingMenu.setOnOpenedListener(new SlidingMenu.OnOpenedListener() {
  15. public void onOpened() {
  16. }
  17. });
  18. return localSlidingMenu;
  19. }

配置设定方法中 setMode() 是常用属性有:

1)SlidingMenu.LEFT    左测菜单
2)SlidingMenu.RIGHT   右侧菜单
3)SlidingMenu.LEFT_RIGHT    左右2测菜单 
注意:如果是1)或则  2) 的话,menu界面只用setMenu()就可以设定了
   如果是3)的话,必须在加上setSecondaryMenu()这个方法
[java] view plaincopy
  1. <span style="white-space:pre">      </span>localSlidingMenu.setMenu(R.layout.left_drawer_fragment);//设置左测menu的布局文件
  2. localSlidingMenu.setSecondaryMenu(R.layout.profile_drawer_right);<span style="font-family: Helvetica, arial, freesans, clean, sans-serif;">//设置右测menu的布局文件</span>
  3. localSlidingMenu.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧阴影文件

配置设定方法中 setTouchModeAbove() 是常用属性有:

1)SlidingMenu.LEFT    在左测进行拖动才会相应MENU的拖动效果
2)SlidingMenu.RIGHT  在右测进行拖动才会相应MENU的拖动效果
3)SlidingMenu.TOUCHMODE_FULLSCREEN    全屏可以拖动
配置设定方法中 attachToActivity(Activity activity, int slideStyle)中slideStyle常用属性有:
1)SlidingMenu.LEFT    
2)SlidingMenu.RIGHT   
3)SlidingMenu.ABOVE    
配置设定中以下方法的效果是一样的,可是实现方式不一样:
[java] view plaincopy
  1. <span style="white-space:pre">  </span>localSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
  2. localSlidingMenu.setShadowWidth(100);//设置阴影图片的宽度

第一个是从资源文件中获取 ,第二种是直接设定给它,注意,第二种设定的是像素,所以一般建议用第一种方式,其它有的方法结构一样也是类似,以此类推。

这样便配置完成了SlidingMenu,之后你可以去调用以下方法实现SlidingMenu的动作效果:

1)localSlidingMenu.showContent();  //隐藏Menu菜单

2)localSlidingMenu.showMenu();  //显示Menu菜单

3)localSlidingMenu.showSecondaryMenu();  //显示Menu第2个菜单
4)localSlidingMenu.setOnOpenListener(OnOpenListener listener);  设置Menu菜单的打开监听
5)localSlidingMenu.setOnCloseListener(OnCloseListener listener);  设置Menu菜单的关闭时候的监听(when)
6)localSlidingMenu.setOnClosedListener(OnClosedListener listener);;  设置Menu菜单的关闭后的监听(after ,和方法4是有区别的)
和一些判断:
1)Boolean 类型:localSlidingMenu.isMenuShowing(); 判断menu菜单是否是显示的,显示的话返回true,反之false。
   localSlidingMenu.isSecondaryMenuShowing(); 判断menu的第2个菜单是否是显示的,显示的话返回true,反之false。

上面的流程设定的menu是通过设定layout给定的布局文件,而有的人喜欢把侧拉菜单使用块Fragment去管理,那么可以继承架包中的SlidingFragmentActivity方法去实现。

下面是我找到的一个相关帖子,我这里就不做总结了,里面有怎么去用Fragment实现menu.点我
上面讲好了用代码的方式去实现menu侧拉菜单,下面说说如何在布局xml文件中实现类似的效果。
其实就是把SlidingMenu作为一个view,在布局文件中配置实现。
[html] view plaincopy
  1. <com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
  2. xmlns:sliding="http://schemas.android.com/apk/res-auto"
  3. android:id="@+id/slidingmenulayout"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. sliding:viewAbove="@layout/YOUR_ABOVE_VIEW"
  7. sliding:viewBehind="@layout/YOUR_BEHIND_BEHIND"
  8. sliding:touchModeAbove="margin|fullscreen"
  9. sliding:behindOffset="@dimen/YOUR_OFFSET"
  10. sliding:behindWidth="@dimen/YOUR_WIDTH"
  11. sliding:behindScrollScale="@dimen/YOUR_SCALE"
  12. sliding:shadowDrawable="@drawable/YOUR_SHADOW"
  13. sliding:shadowWidth="@dimen/YOUR_SHADOW_WIDTH"
  14. sliding:fadeEnabled="true|false"
  15. sliding:fadeDegree="float"
  16. sliding:selectorEnabled="true|false"
  17. sliding:selectorDrawable="@drawable/YOUR_SELECTOR"/>

类似于这样,它的相关属性配置和代码是一样的,只是换成了布局中设定相关属性而已。

使用过程中发现的问题:
1)设置了这个属性后localSlidingMenu.setTouchModeBehind(SlidingMenu.RIGHT);
会发生测拉菜单按钮等的焦点被夺走或失效,所以这个属性最好不好设了。
2)关于SlidingMenu的引发的原生动画不流畅的问题

Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)相关推荐

  1. Android SlidingMenu 开源项目使用示例(一)

    SlidingMenu简介 SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果.如Evernote. ...

  2. 安卓巴士总结了近百个Android优秀开源项目

    安卓巴士总结了近百个Android优秀开源项目 转自:http://sfshine.iteye.com/blog/1724962 Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了 ...

  3. 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域_拔剑-浆糊的传说_新浪博客...

    http://www.apkbus.com/android-17627-1-1.html 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域 bayou 发表于 2011 ...

  4. Android常见开源项目的原理及使用方法

    Android常见开源项目的原理及使用方法 http://www.duobei.com/course/4514662053 [课程目标]  提升Android技术,提升软件设计技能,迈向架构师 [课程 ...

  5. 2018.11月Android优质开源项目

    2019独角兽企业重金招聘Python工程师标准>>> 2018.11月Android优质开源项目 转载于:https://my.oschina.net/coderminer/blo ...

  6. 【UI学习】Android github开源项目,酷炫自定义控件(View)汇总

    [UI学习]Android github开源项目,酷炫自定义控件(View)汇总 转载  2016年09月04日 23:23:15 3484 近期整理的比较酷炫并且我们会经常用到的custom vie ...

  7. Android x86开源项目虚拟机镜像下载(VM/Vbox)

    Android x86 开源项目可以让我们在虚拟机中直接运行Android系统,这里的x86指的是平台架构非32位版. 如果你曾经查找过VMware 虚拟机安装 Android 的教程,应该了解直接安 ...

  8. Android常用开源项目

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

  9. 源码下载:74个Android开发开源项目汇总

    1. ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所 ...

最新文章

  1. 填充磁盘空间的工具和方法
  2. 照片识别出错_2.GQI2021强电专业点式专业图元识别连载
  3. 002 前、中、后序遍历二叉树(递归迭代)
  4. 20165318 结对编程项目-四则运算 阶段总结
  5. 又收获一位副总裁?传暴风TV CEO刘耀平已加盟小米电视
  6. php server phpself,nginx中的PATH_INFO为什么会影响$_SERVIER['PHP_SELF']
  7. 静态初始化--我的理解
  8. Julia: 如何读出csv文件中的中文字符?
  9. Linux内核之队列操作
  10. java 获取汉字拼音_java springboot中获取汉字拼音
  11. Matlab guass-legendre求积代码
  12. 开方在java中怎么计算_JAVA BigDecimal使用牛顿迭代法计算平方根(开方)
  13. word毕业论文页眉设置自动添加章节标题并左右对齐
  14. java qq协议 php_Java基于JavaMail实现向QQ邮箱发送邮件
  15. java stl分解_stl文件格式解析代码--java版
  16. 制作一个简单的Chrome extensions并发布到应用商店
  17. 【错误记录】Mac 中 Python 报错 ( ERROR: Could not build wheels for numpy which use PEP 517 | 问题未解决 | 问题记录 )
  18. python指数函数表示_python实现画出e指数函数的图像
  19. ConnectBot的使用
  20. 秋招面/笔试题目集合——06

热门文章

  1. 【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
  2. 【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )
  3. 【计算理论】计算复杂性 ( coNP 问题 | coNP 完全 | P、NP、coNP 相互关系 )
  4. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )
  5. 【Kotlin】接口 ( 声明 | 实现 | 接口方法 | 接口属性 | 接口覆盖冲突 | 接口继承 )
  6. 【Android 应用开发】Canvas 绘制文字 ( 文字尺寸测量 | 基线绘制 )
  7. 【Android 应用开发】Android - 按钮组件详解
  8. JavaScript的学习
  9. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...
  10. Sql Server触发器的使用