侧滑菜单SlidingMenu与抽屉式菜单DrawerLayout

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuxingyuzaixian/article/details/82809560

在实际项目开发中经常会使用到侧滑页面的操作,但对技术而言常用的开发api框架有SlidingMenu与DrawerLayout

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自带的默认视图看到效果

猜你喜欢

转载自blog.csdn.net/liuxingyuzaixian/article/details/82809560