版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuxingyuzaixian/article/details/82809560
在实际项目开发中经常会使用到侧滑页面的操作,但对技术而言常用的开发api框架有SlidingMenu与DrawerLayout
名称 | Menu层的UI位于 | 是否有联动效果 | 是否有蒙版 | 代码编写的耦合性 | |
SlidingMenu | 滑动菜单 | Content的上面 | 否 | 否 | 低 |
DrawerLayout | 抽屉式菜单 | Content的下面 | 是 | 是 | 高 |
一、SlidingMenu
这个可以直接去GitHub(https://github.com/jfeinstein10/SlidingMenu)下载SlidingMenu ,将其中的library作为module引入到项目中即可使用。它可以以xml形式绘制UI形成侧滑菜单,将侧滑菜单与View绑定在一起,代码比较简洁:
// configure the SlidingMenu
SlidingMenu menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
// 设置触摸屏幕的模式
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
// 设置滑动菜单视图的宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置渐入渐出效果的值
menu.setFadeDegree(0.35f);
/**
* SLIDING_WINDOW will include the Title/ActionBar in the content
* section of the SlidingMenu, while SLIDING_CONTENT does not.
*/
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
//为侧滑菜单设置布局
menu.setMenu(R.layout.left_menu);
效果图:
常用的属性
//设置侧滑菜单的位置,可选值LEFT , RIGHT , LEFT_RIGHT (两边都有菜单时设置,其中LEFT_RIGHT需要设置menu.setSecondaryMenu(R.layout.right_menu_frame))
menu.setMode(SlidingMenu.LEFT_RIGHT);
// 设置触摸屏幕的模式,可选只MARGIN , CONTENT
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
//根据dimension资源文件的ID来设置阴影的宽度
menu.setShadowWidthRes(R.dimen.shadow_width);
//根据资源文件ID来设置滑动菜单的阴影效果
menu.setShadowDrawable(R.drawable.shadow);
// 这两个都是设置滑动菜单视图的宽度,二选一
//设置SlidingMenu离屏幕的偏移量
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
//设置宽度
menu.setBehindWidth()
// 设置渐入渐出效果的值
menu.setFadeDegree(0.35f);
//设置SlidingMenu与下方视图的移动的速度比,当为1时同时移动,取值0-1
menu.setBehindScrollScale(1.0f);
//设置二级菜单的阴影效果
menu.setSecondaryShadowDrawable(R.drawable.shadow);
//设置右边(二级)侧滑菜单
menu.setSecondaryMenu(R.layout.right_menu_frame);
//为侧滑菜单设置布局
menu.setMenu(R.layout.leftmenu);
//把滑动菜单添加进所有的Activity中,可选值SLIDING_CONTENT , SLIDING_WINDOW
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
常用的接口
/**
* 设置打开监听事件,当滑动菜单被打开时调用
*/
public void setOnOpenListener(OnOpenListener listener) {
mOpenListener = listener;
}
/**
* 设置关闭监听事件,当滑动菜单被关闭时调用
*/
public void setOnCloseListener(OnCloseListener listener) {
//mViewAbove.setOnCloseListener(listener);
mCloseListener = listener;
}
/**
* 设置打开监听事件,当滑动菜单被打开过之后调用
*/
public void setOnOpenedListener(OnOpenedListener listener) {
mViewAbove.setOnOpenedListener(listener);
}
/**
* 设置关闭监听事件,当滑动菜单被关闭过之后调用
*/
public void setOnClosedListener(OnClosedListener listener) {
mViewAbove.setOnClosedListener(listener);
}
SlidingMenu demo下载地址:https://download.csdn.net/download/liuxingyuzaixian/10682113
二、DrawerLayout
这个可以通过AndroidStudio自带的默认视图看到效果