Android SlidingMenu 侧拉菜单的使用(详细配置)

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

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

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

国外用到该库的应用APP:

使用方法:

一.首先导入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.                 });  
  19.         return localSlidingMenu;  
  20.     }  

配置设定方法中 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的引发的原生动画不流畅的问题

slidingmenu会不间断进行全局重绘,所以如果动画多了就卡

时间: 2024-10-28 14:40:00

Android SlidingMenu 侧拉菜单的使用(详细配置)的相关文章

Android UI实现SlidingMenu侧滑菜单效果_Android

本篇博客给大家分享一个效果比较好的侧滑菜单的Demo,实现点击左边菜单切换Fragment. 效果如下:   主Activity代码: package com.infzm.slidingmenu.demo; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.View; import android.view.View.OnClickListener; import andro

《手机测试Robotium实战教程》—第2章2.3节Android SDK的安装及环境变量配置

2.3 Android SDK的安装及环境变量配置 进行Android开发或者自动化测试,Android SDK是必不可少的. 如果没有特别的要求,可以选择下载混合的下载包,里面包含Eclipse.ADT和Android SDK.本书是单独下载SDK安装程序.双击运行安装程序,安装完毕后,在安装目录下运行"SDK Manager.exe",在弹出的窗口中选中Tools文件夹,下载最新版本的Android SDK Tools.Android SDK Platform-tools和Andr

.Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决

原文:.Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决 说真心话,Eclipse跟我们.net的VS比起来就是屌丝比高富帅,一切都是那么的难用,速度慢得我无法忍受 于是想试试Google钦点的Android Studio IDE工具,这跟ADT一样也是一套集成工具,也需要安装java JDK 1.下载最新的JDKhttp://developers.sun.com/downloads/ 我是下载JDK1.7版本,安装过程可

《Android应用开发》——1.3节配置Eclipse

1.3 配置Eclipse Android应用开发 幸运的是,配置Eclipse的过程在Windows.Mac和Linux平台上是一样的.启动Eclipse,指定想把workspace安装到什么位置.理论上,它可以安装到任何位置,但笔者的workspace总是安装在Mac系统的/Documents/workspace目录下.只要一直使用同一个目录,就不会遇到什么问题. 1.3.1 给Eclipse添加Android插件 既然已经把Eclipse运行起来,下面需要添加Android的ADT插件.这

Android应用中菜单(Menu)的位置显示问题

问题的产生: 在bugzilla中发现测试人员提出的一个bug,经过仔细阅读测试人员给出的信息,发现是关于应用中MENU按键弹出菜单和点击More弹出菜单的位置显示不一致的问题,具体问题如下:1.按下手机上的MENU按键弹出的菜单显示如下: 2.点击右上角的More按钮显示的菜单如下: 初步分析:从表面来看,同样的功能菜单,同样的选项,不同是触发方式和显示的位置.单单从表面上来看已经无法知晓此差别的原因了,下面就去分析和研究以下android的browser源码.分析结果:通过分析android

Android SlidingMenu使用和示例详解_Android

很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,如果对SlidingMenu 还不是很了解的童鞋,可以参考下本篇博客.将侧滑菜单引入项目的方式很多中,本博客先通过例子介绍各种引入方式,然后给大家展示个实例:主布局ViewPager,左右各一个侧滑菜单的用法,差不多已经能满足大部分应用的需求了.关于常用属性,在文章末尾介绍. 1.在Activity中通过SlidingMenu构造方法,直接设置侧滑菜单 package co

asp中的ckEditor的详细配置小结_应用技巧

ckeditor的详细配置: 在网上找了好久终于找到了!O(∩_∩)O哈哈~ 一.使用方法: 1.在页面<head>中引入ckeditor核心文件ckeditor.js 复制代码 代码如下: <script type="text/javascript" src="ckeditor/ckeditor.js"></script> 2.在使用编辑器的地方插入HTML控件<textarea> 复制代码 代码如下: <te

工信部曝光红米Note 4G版及红米手机 4G版详细配置

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 [TechWeb报道]目前,关于小米新品手机的消息基本已经没什么悬念了,工信部日前给出了红米系列新品手机的详细配置,让我们吃惊的是,不仅红米Note将升级至4G网络,连红米手机也将迎来全新升级. 根据工信部的消息,4G版红米Note在配置上变化不大,依旧是5.5英寸720P屏幕,搭载主频为1.6GHz的高通MSM8928处理器,辅以2GB内存

asp中的ckEditor的详细配置小结

ckeditor的详细配置: 在网上找了好久终于找到了!O(∩_∩)O哈哈~ 一.使用方法: 1.在页面<head>中引入ckeditor核心文件ckeditor.js 复制代码 代码如下: <script type="text/javascript" src="ckeditor/ckeditor.js"></script> 2.在使用编辑器的地方插入HTML控件<textarea> 复制代码 代码如下: <te