slidingmenu完美实现沉浸式,demo下载地址在github

来源:互联网 发布:儿童学编程用什么教材 编辑:程序博客网 时间:2024/05/20 18:44

demo地址:https://github.com/yugu88/BaoDian

由于在网上找了很久没有可行的解决方案,都是提了一点点就不说了,所以我还是亲自研究了两个晚上,把众多的坑踏平,为了方便以后的人使用沉浸式传了源码。


实现过程有很多的坑,源代码已上传github,本人demo后续一直会更新,其他功能会持续开发下去,尽量会保留有关次功能的页面简洁。。。


由于slidingmenu的jar包和library包名和内部类名都有可能不同,请下载github源码slidingmenu,slidingmenu已停止更新,本人下载为最新版本,也可以从我的项目里拷走。。。。

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        //这里使用的是slidingmenu的第三种用法。        setContentView(R.layout.slidingmenu_main);        View view=getLayoutInflater().inflate(R.layout.main_menu_login, null, false);        // 管理activity        ActivityUtil.getInstance().addActivity(this);        //初始化菜单        initMenu(view);        top=getTitleTop();    }    @Override    protected void onResume() {        super.onResume();        // 判断当前SDK版本号,如果是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);            ((LinearLayout) findViewById(R.id.sou_s)).setPadding(0, top, 0, 0);        }    }    private int getTitleTop() {        Class<?> c=null;        Object obj=null;        Field field=null;        int x=0, sbar=0;        try {            c=Class.forName("com.android.internal.R$dimen");            obj=c.newInstance();            field=c.getField("status_bar_height");            x=Integer.parseInt(field.get(obj).toString());            sbar=getResources().getDimensionPixelSize(x);// 状态栏高度        } catch (Exception e1) {            e1.printStackTrace();        }        Log.e("状态栏高度:", sbar + ":" + x);        return sbar;    }    private void initMenu(View view) {        mMenu=(SlidingMenu) findViewById(R.id.slidingmenulayout);        mMenu.setMode(SlidingMenu.LEFT);        // 设置触摸屏幕的模式        mMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);        //获取屏幕宽高        DisplayMetrics dm=new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);        // 设置滑动菜单视图的宽度        mMenu.setBehindWidth(dm.widthPixels * 4 / 5);        // 设置渐入渐出效果的值        mMenu.setFadeDegree(0.35f);        mMenu.setMenu(view);        initView(view);    }


1 0