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会不间断进行全局重绘,所以如果动画多了就卡
  
   希望这篇文章能帮助大家,有什么问题和意见随便提~

 

 

 

 

   

posted @ 2015-10-21 14:33  还没好好感受年轻  阅读(1242)  评论(0编辑  收藏  举报