关于状态栏的那些事

原创 2017年01月03日 14:03:20
 /**
     * 淡化状态栏和导航栏
     * 用户触碰到状态栏或者导航栏时会自动恢复
     */
    public void danhuaClick(View view) {
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE;
        decorView.setSystemUiVisibility(uiOptions);
    }

    /**
     * 恢复淡化状态
     */
    public void huifuClick(View view) {
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(0);
    }

    /**
     * 隐藏状态栏
     * 一旦设置会一直生效
     * 用户下拉时会显示状态栏,然后会自动隐藏状态栏
     */
    public void yincangztlClick(View view) {


        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

//            // 4.1之后可以动态隐藏状态栏,用户下拉后会恢复,需要重新设置
//            View decorView = getWindow().getDecorView();
//            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
//            decorView.setSystemUiVisibility(uiOptions);

    }

    /**
     * 隐藏导航栏和状态栏
     * 用户点击后重新显示
     */
    public void zhuangtaiClick(View view) {
        //4.0以上
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

    /**
     * 非粘性沉浸式模式
     * 用户向下滑动恢复,需重新设置才能生效
     * 恢复后Actionbar会盖住内容建议隐藏
     */
    public void feinianClick(View view) {
        View mDecorView = getWindow().getDecorView();
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);
    }


    /**
     * 恢复非粘性沉浸式模式
     * 恢复后Actionbar会盖住内容建议隐藏
     */
    public void huifufeiClick(View view) {
        View mDecorView = getWindow().getDecorView();
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }

    /**
     * 粘性沉浸式模式
     * 用户下拉显示状态栏和导航栏
     * 一段时间后自动隐藏
     */
    public void nianxingClick(View view) {
        View mDecorView = getWindow().getDecorView();
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | View.SYSTEM_UI_FLAG_IMMERSIVE
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        );
    }

    /**
     * 内容穿透状态栏和导航栏
     * 为布局设置fitsSystemWindows属性防止内容位移
     * 根据具体情况为相应的控件设置此属性
     * 当actionbar存在时,谷歌并没有提供一个好的解决方案
     *
     * @param view
     */
    public void chuantouClick(View view) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            // 5.0
            // 全透明状态栏
            getWindow().setStatusBarColor(Color.parseColor("#00000000"));
            // 半透明状态栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //透明导航栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
    }


    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            // TODO 当窗口获取到焦点时会执行此方法
            Log.e("窗口", "获取焦点");
        }
    }

/**
     * 专注模式
     */
    public void myClick(View v){
        int currentVis = v.getSystemUiVisibility();
        int newVis;
        if ((currentVis & View.SYSTEM_UI_FLAG_LOW_PROFILE)
                == View.SYSTEM_UI_FLAG_LOW_PROFILE) {
            newVis = View.SYSTEM_UI_FLAG_VISIBLE;
        } else {
            newVis = View.SYSTEM_UI_FLAG_LOW_PROFILE;
        }
        v.setSystemUiVisibility(newVis);
    }
    /**
     * 隐藏底部导航栏
     *
     * @param v
     */
    public void myClick2(View v) {
        v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    }

    /**
     * 全屏模式
     */
    public void myClick3(View v) {
        v.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    }
版权声明:

相关文章推荐

关于Android4.4及以上状态栏渲染那点事

关键代码: //渲染状态栏 // requestWindowFeature(Window.FEATURE_NO_TITLE); //通知栏设为透明 android系统4.4以上才...
  • CGG92
  • CGG92
  • 2016-09-20 16:27
  • 236

屏蔽下拉状态栏

  • 2017-09-10 22:54
  • 8.02MB
  • 下载

Android延时启动效果+轮播图+点击进入+沉浸式状态栏+按钮点击颜色渐变效果+好看的UI框架

最近发现Android产品要想拿得出手,除了稳定实用的功能,好看的UI必不可少。 废话不都说,为大家介绍几种常见的Android显示效果。 首先是延时启动效果,主要表现就是点击进去之后...

沉浸式状态栏的实现

  • 2017-08-10 23:01
  • 25.59MB
  • 下载

沉浸式状态栏

  • 2017-08-05 16:50
  • 2.10MB
  • 下载

android4.4版本状态栏改变颜色

在baseactivity里面写入以下方法 if (android.os.Build.VERSION.SDK_INT > 18) { Window window = getWindow(...

也来说说ios6 ios7的状态栏适配的问题

最近把开发环境升级到xcode5了,sdk也升级到了ios7了,也和大家一样遇到一些郁闷的问题。不过首先值得肯定的是xib文件变小了,网上很多说小到只有原来的十分之一,在我这里也是这样的。 最令我头...
  • swibyn
  • swibyn
  • 2013-12-04 10:44
  • 2675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)