Android 侧滑菜单 SlidingMenu
1.下载地址:https://github.com/jfeinstein10/SlidingMenu
2.SldingMenu是一种新的界面配置效果,用户左滑或右滑会弹出设置界面,很多优秀应用都采用这种方式,效果如图:
3.配置:
有两种方式:①直接将src下的文件及相应配置信息复制到自己的工程里;
②采用工程依赖的方式引入自己的工程(左侧是自己的工程,右侧是SlidingMenu工程),如图
我自己习惯使用第二种方式,方便而且可以避免出错。
3.下面介绍SlidingMenu的使用:
①直接继承SlidingMenuFragmentActivity
SlidingMenu menu = getSlidingMenu();
②不需要继承SlidingMenuFragmentActivity,直接在onCreate方法里初始化,如下
SlidingMenu menu = new SlidingMenu(this);
③作为一般的控件使用,如下
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:sliding="http://schemas.android.com/apk/res-auto" android:id="@+id/slidingmenulayout" android:layout_width="120dp" android:layout_height="170dp" android:background="#ffffffff" sliding:behindOffset="0dp" sliding:behindScrollScale="1" sliding:fadeDegree="0.3" sliding:fadeEnabled="true" sliding:touchModeAbove="fullscreen" sliding:viewAbove="@layout/pic" />
④在使用SlidingMenu之前还要准备以下几个参数:
两个Fragment,即LeftFragment和RightFragment(布局任意,自己定义),两个承载Fragment的容器R.layout.leftmenu(只有一个控件 R.id.leftMenu)和R.layout.rightmenu(仅有一个控件R.id.rightMenu),这里代码相对简单就不一一展示,下面介绍SlidingMenu的参数配置:
SlidingMenu menu = getSlidingMenu(); //初始化方式根据自己选择做适当调整 menu.setMode(SlidingMenu.LEFT_RIGHT)// LEFT_RIGHT:左右两页菜单 // LEFT:仅仅左侧菜单 // RIGHT:仅仅右侧菜单 menu.setMenu(R.layout.leftmenu); //左侧菜单栏容器 menu.setSecondaryMenu(R.layout.right); //右侧菜单栏容器 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);//TOUCHMODE_MARGIN:从屏幕边缘滑动 //弹出菜单 //TOUCHMODE_FULLSCREEN 任意位置滑动都会弹出菜单 // TOUCHMODE_NONE 取消手势滑动弹出菜单 menu.setBehindOffset(100); //菜单弹出后距屏幕另一侧的距离 getFragmentManager().beginTransaction().replace(R.id.leftMenu, leftMenuFragment).commit(); //将LeftMenuFragment填充进R.layout.leftMenu getFragmentManager().beginTransaction().replace(R.id.rightMenu, rightMenuFragment).commit();//将rightMenuFragment填充进R.layout.rigMenu menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度 menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片 menu.setFadeEnabled(true);//设置滑动时菜单的是否渐变 menu.setFadeDegree(0.35F);//滑动时的渐变程度
menu.toggle(); //动态判断自动关闭或开启SlidingMenu
菜单页的开关控制和监听:
menu.showContent(); //隐藏Menu菜单 menu.showMenu(); //显示Menu菜单 menu.showSecondaryMenu(); //显示Menu第2个菜单 menu.setOnOpenListener(OnOpenListener listener); //设置Menu菜单的打开监听 menu.setOnCloseListener(OnCloseListener listener); // 设置Menu菜单的关闭时候的监听(when) localSlidingMenu.setOnClosedListener(OnClosedListener listener); // 设置Menu菜单的关闭后的监听
另附上另外一个网友的意见(有兴趣的网友可以尝试下):
使用过程中发现的问题:
1)设置了这个属性后localSlidingMenu.setTouchModeBehind(SlidingMenu.RIGHT);
会发生测拉菜单按钮等的焦点被夺走或失效,所以这个属性最好不好设了。
2)关于SlidingMenu的引发的原生动画不流畅的问题
slidingmenu会不间断进行全局重绘,所以如果动画多了就卡
希望这篇文章能帮助大家,有什么问题和意见随便提~