您的位置:首页 > 移动开发 > Android开发

开源项目SlidingMenu简单使用指南

2015-03-24 09:16 513 查看

一.简介
SlidingMenu能很方便的实现侧滑菜单栏,很多有名的软件都是用这种效果。如Evernote、Google+、Foursquare等,国内的QQ,豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案。


二.准备工作

1.下载开源项目SlidingMenu,地址:https://github.com/jfeinstein10/SlidingMenu
2.下载它的依赖项目ActionBarSharlock,地址:https://github.com/JakeWharton/ActionBarSherlock 
3.把这两个项目包含到你的项目中

记得把三个项目的android-support-v4统一一下,最简单的方法就是删了其他两个,把自己的复制粘贴过去。
废话不多,直接上源码.

三.源码

1.drawable文件夹下建立shadow.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<gradient
android:endColor="#33000000"
android:centerColor="#11000000"
android:startColor="#00000000" />

</shape>
2.value文件夹下建立dimens.xml,这个是菜单的各个配置,自己尝试下改变值。
<resources>

<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="slidingmenu_offset">60dp</dimen>
<dimen name="list_padding">10dp</dimen>
<dimen name="shadow_width">15dp</dimen>

<integer name="num_cols">1</integer>

</resources>
3.这个是你的菜单的视图 menu.xml,自由发挥。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#77B72C"
android:orientation="vertical" >

</LinearLayout>
4.最后,在你需要添加菜单的activity里加上短短几行代码即可。
<pre name="code" class="java">private SlidingMenu menu;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//设置菜单呢内容
menu = new SlidingMenu(this);
//设置菜单在右边
menu.setMode(SlidingMenu.RIGHT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
menu.setShadowDrawable(R.drawable.shadow);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setBehindWidth(800);
menu.setFadeDegree(0.35f);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
menu.setMenu(R.layout.menu);// 就是普通的layout布局
mTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.scale(percentOpen, 1, 0, 0);
}
};
menu.setBehindCanvasTransformer(mTransformer);
}





5.相关配置
menu.setMode(SlidingMenu.LEFT);//设置左滑菜单

menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕范围,该设置为全屏区域都可以滑动

menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片

menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度

menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度

menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度

menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度

menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上

menu.setMenu(R.layout.menu_layout);//设置menu的布局文件

menu.toggle();//动态判断自动关闭或开启SlidingMenu

menu.showMenu();//显示SlidingMenu

menu.showContent();//显示内容

menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开

关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after 

menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件

menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件

左右都可以划出SlidingMenu菜单只需要设置

menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件

menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息