记录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.     }  
 

猜你喜欢

转载自blog.csdn.net/android123it/article/details/79937340
今日推荐