首先我们需要下载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里面设置透明的状态栏:
- private void initTranslucentStatus(){
- //4.4 全透明状态栏(有的机子是过渡形式的透明)
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- }
- //5.0 全透明实现
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- Window window = getWindow();
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setStatusBarColor(Color.TRANSPARENT);// calculateStatusColor(Color.WHITE, (int) alphaValue)
- }
- }