记录android 用SlidingMenu实现的侧拉菜单

首先我们需要下载SlidingMenu的开开源库https://github.com/jfeinstein10/SlidingMenu

解压之后把文件夹中的library文件夹以导库的方式导入我们的项目中,操作顺序:


选择要找的库


需要把导入的加到我们的项目中


这样就导入成功了,但是编译会报错



我的解决办法是,在library的文件里面找到这个资源文件,改一下名字就完美的解决了


现在基本是导入成功了,后面完美来引入Slidingmenu,代码:

private SlidingMenu menu;

menu= new SlidingMenu(getActivity());
        menu.setMode(SlidingMenu.LEFT);
        // 设置触摸屏幕的模式
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
        menu.setShadowWidthRes(R.dimen.button_width4);
//        menu.setShadowDrawable(R.color.colorAccent);

        // 设置滑动菜单视图的宽度
        menu.setBehindOffsetRes(R.dimen.slidingmenu);//SlidingMenu划出时主页面显示的剩余宽度
        // 设置渐入渐出效果的值
        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(getActivity(), SlidingMenu.SLIDING_CONTENT);
        menu.attachToActivity(getActivity(), SlidingMenu.SLIDING_WINDOW);
        //为侧滑菜单设置布局
        menu.setMenu(R.layout.activity_menu);

menu.toggle();//开启或者关闭SlidingMenu

如果需要设置沉浸式的状态栏,需要改SlidingMenu中的代码

找到SlidingMenu.java这个类中的attachToActivity()方法,然后注释掉

decor.addView(this);

再加上下面的代码:

RelativeLayout relativeLayout = new RelativeLayout(activity);
TextView textView = new TextView(activity);
textView.setFitsSystemWindows(true);
relativeLayout.addView(textView);
relativeLayout.addView(this);
decor.addView(relativeLayout);
注意一定要用:
menu.attachToActivity(getActivity(), SlidingMenu.SLIDING_WINDOW);

这样就可以实现SlidingMenu的沉浸式状态栏了

后面需要在baseActivity里面设置透明的状态栏:

  1. private void initTranslucentStatus(){  
  2.   
  3.         //4.4 全透明状态栏(有的机子是过渡形式的透明)  
  4.         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){  
  5.             getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  6.             getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  7.         }  
  8.         //5.0 全透明实现  
  9.         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
  10.             Window window = getWindow();  
  11.             window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  12.             window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
  13.                     | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);  
  14.             window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
  15.             window.setStatusBarColor(Color.TRANSPARENT);// calculateStatusColor(Color.WHITE, (int) alphaValue)  
  16.         }  
  17.     }  

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值