更新 新发现:android 4.4.4  直接(底部导航栏隐藏,切屏蔽了上划出现的问题)

      getWindow().getDecorView().setSystemUiVisibility(4108);

但是在弹出软键盘或者拉下状态栏是还会出现

      所以加了一个方法 禁止状态栏被点击(特殊需求才用到)

 CustomViewGroup view;    WindowManager manager;    public void prohibitDropDown() {        manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE));        WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();        localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;        localLayoutParams.gravity = Gravity.TOP;        localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|                // this is to enable the notification to recieve touch events                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |                // Draws over status bar                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;        localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;        localLayoutParams.height = (int) (50 * getResources()                .getDisplayMetrics().scaledDensity);        localLayoutParams.format = PixelFormat.TRANSPARENT;        view = new CustomViewGroup(this);        manager.addView(view, localLayoutParams);    }    /**     * 允许下拉状态栏点击选项     */    public void allowDropDown(){        manager.removeView(view);    }    public class CustomViewGroup extends ViewGroup {        public CustomViewGroup(Context context) {            super(context);        }        @Override        protected void onLayout(boolean b, int i, int i1, int i2, int i3) {        }        @Override        public boolean onInterceptTouchEvent(MotionEvent ev) {            return true;        }    }    //系统ui变化监听(一般都是状态栏和导航栏)    @Override    public void onWindowFocusChanged(boolean hasFocus)    {        super.onWindowFocusChanged(hasFocus);//        getWindow().getDecorView().setSystemUiVisibility(options);    }

 

方法一  滑动屏幕 可重新显示出来

protected void hideBottomUIMenu() {    //隐藏虚拟按键,并且全屏    if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api        View v = this.getWindow().getDecorView();        v.setSystemUiVisibility(View.GONE);    } else if (Build.VERSION.SDK_INT >= 19) {        //for new api versions.        View decorView = getWindow().getDecorView();        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;        decorView.setSystemUiVisibility(uiOptions);    }}

 

方法二  滑动也不能重新显示

protected void hideBottomUIMenu() {    //隐藏虚拟按键,并且全屏    if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api        View v = this.getWindow().getDecorView();        v.setSystemUiVisibility(View.GONE);    } else if (Build.VERSION.SDK_INT >= 19) {               Window _window = getWindow();        WindowManager.LayoutParams params = _window.getAttributes();        params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_IMMERSIVE;        _window.setAttributes(params);    }}

方法三  亲测好用(监听系统UI变化实现)

protected void hideBottomUIMenu() {//隐藏底部导航栏final  View decorView = getWindow().getDecorView();final int  uiOption = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION        |View.SYSTEM_UI_FLAG_LAYOUT_STABLE        |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION        |View.SYSTEM_UI_FLAG_IMMERSIVE        |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;decorView.setSystemUiVisibility(uiOption);// This code will always hide the navigation bardecorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener(){    @Override    public void  onSystemUiVisibilityChange(int visibility)    {        if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)        {            decorView.setSystemUiVisibility(uiOption);        }    }});

}

//系统ui变化监听(一般都是状态栏和导航栏)@Overridepublic void onWindowFocusChanged(boolean hasFocus){    super.onWindowFocusChanged(hasFocus);    getWindow().getDecorView().setSystemUiVisibility(            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                    |View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    |View.SYSTEM_UI_FLAG_IMMERSIVE                    |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);}

(如有发现问题,可以留言,私聊探讨。)

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. android dex分包支持
  3. Android中如何实现WebView与JavaScript的相互调用
  4. android 点击退出程序
  5. Android(安卓)WebView使用基础
  6. android系统中的多线程(二): 关于在work thread中对UI进行更新和
  7. android2D
  8. Android中的ClassLoader
  9. android View的点击事件分发机制的简单认知

随机推荐

  1. android 自动生成ldpi, mdpi, hdpi, xhdp
  2. Android——仿QQ的多界面的ViewPager
  3. Android 开发中的若干安全问题 之 Activi
  4. Android开发者网站打不开的解决方法
  5. Android属性之build.prop生成过程分析及
  6. android的application类中,onCreate()被执
  7. Android Studio 活动的最佳实践 知晓当前
  8. Android使用webview调用js方法传参,参数
  9. 收藏的博客列表
  10. Android中的WakeLock使用