Android动态显示和隐藏状态栏

原创 2015年11月14日 02:00:46

简述:

View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。

setSystemUiVisibility方法传入的实参分析:

   setSystemUiVisibility(int visibility)方法可传入的实参为:

    1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,

Activity不全屏显示(恢复到有状态的正常情况)。

    2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。

    3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。

    4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

    5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

    8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。





相关代码:

package com.administrator.statubarapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        assignViews();


        setOnClicks();
    }

    private void setOnClicks() {
        mButton1.setOnClickListener(this);
        mButton2.setOnClickListener(this);
        mButton3.setOnClickListener(this);
        mButton4.setOnClickListener(this);
        mButton5.setOnClickListener(this);
        mButton6.setOnClickListener(this);
        mButton7.setOnClickListener(this);
    }

    private LinearLayout mMain;
    private TextView mTextview;
    private Button mButton1;
    private Button mButton2;
    private Button mButton3;
    private Button mButton4;
    private Button mButton5;
    private Button mButton6;
    private Button mButton7;

    private void assignViews() {
        mMain = (LinearLayout) findViewById(R.id.main);
        mTextview = (TextView) findViewById(R.id.textview);
        mButton1 = (Button) findViewById(R.id.button1);
        mButton2 = (Button) findViewById(R.id.button2);
        mButton3 = (Button) findViewById(R.id.button3);
        mButton4 = (Button) findViewById(R.id.button4);
        mButton5 = (Button) findViewById(R.id.button5);
        mButton6 = (Button) findViewById(R.id.button6);
        mButton7 = (Button) findViewById(R.id.button7);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button1:
                //Activity全屏显示,且状态栏被隐藏覆盖掉
                mMain.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
                mTextview.setText("Activity全屏显示,且状态栏被隐藏覆盖掉\nView.SYSTEM_UI_FLAG_FULLSCREEN");
                break;

            case R.id.button2:
                mMain.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
                mTextview.setText("恢复到有状态的正常情况\nView.SYSTEM_UI_FLAG_VISIBLE");
                break;
            case R.id.button3:
                mMain.setSystemUiVisibility(View.INVISIBLE);
                mTextview.setText("//隐藏状态栏,同时Activity会伸展全屏显示\nView.INVISIBLE");
                break;
            case R.id.button4:
                mMain.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
                mTextview.setText("Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮\nView" +
                        ".SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN \n View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION");
                break;
            case R.id.button5:
                mMain.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
                mTextview.setText("Activity全屏显示,状态栏透明\nView.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION");
                break;
            case R.id.button6:
                mMain.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                mTextview.setText("隐藏虚拟按键\nView.SYSTEM_UI_FLAG_HIDE_NAVIGATION");
                break;
            case R.id.button7:
                mMain.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
                mTextview.setText("状态栏低能显示,有一些会被隐藏\nView.SYSTEM_UI_FLAG_LOW_PROFILE");
                break;

                        default:
                break;
        }
    }
}





版权声明:本文为博主原创文章,未经博主允许不得转载。

Android全屏,隐藏状态栏和标题栏

Android全屏,隐藏状态栏和标题栏
  • do168
  • do168
  • 2016年06月05日 09:04
  • 14614

Android隐藏状态栏 全屏

Android隐藏状态栏 全屏本教程讲述如何隐藏Android的不同版本的状态栏。隐藏状态栏(和任选的导航栏)可以有更多的显示空间,从而提供更真实的用户体验。 图1显示一个带有状态栏的应用: ...
  • kingroc
  • kingroc
  • 2016年03月30日 11:31
  • 2593

Android App 隐藏标题栏+状态栏+导航栏

一、隐藏当前Activity标题栏     在当前Activity中调用:this.requestWindowFeature(Window.FEATURE_NO_TITLE); 二、隐藏当...
  • MyArrow
  • MyArrow
  • 2014年05月12日 11:45
  • 70049

Android开发 之 动态显示和隐藏状态栏和导航栏

动态显示和隐藏状态栏和导航栏 方法一:在主题中添加一个属性 true 方法二:在setcontentview之前设置flag getWindow...
  • z_x_Qiang
  • z_x_Qiang
  • 2017年10月23日 23:47
  • 630

Android 实现沉浸式状态,以及状态栏的隐藏和显示

1 实现真正的沉浸式状态栏,只需要重写Activity的onWindowFocusChanged()方法,直接上代码: @Override public void onWindowFocusChan...
  • qq_36580253
  • qq_36580253
  • 2017年05月24日 14:28
  • 1229

动态显示和隐藏状态栏

小米Launcher有一个细节上的功能效果:在长按桌面应用图标时,会隐藏状态栏,然后在状态栏原有的布局上显示卸载或删除的操作栏。放手后,操作栏隐藏,状态栏显示出来。也就是说,这个过程是涉及到对状态栏的...
  • stevenhu_223
  • stevenhu_223
  • 2013年10月08日 15:21
  • 64759

android 标题栏 状态栏的隐藏

super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getSupportActionBar().hide...
  • github_36637174
  • github_36637174
  • 2016年11月07日 14:52
  • 579

Android状态栏微技巧,动态控制状态栏显示和隐藏

记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起...
  • chazihong
  • chazihong
  • 2017年04月18日 15:31
  • 4029

android5.1系统修改源码实现隐藏底部状态栏、隐藏通知栏、隐藏上方状态栏、永不熄屏的方法

结合其他博客的介绍的方法,对android5.1系统源码进行修改实现隐藏底部状态栏、隐藏通知栏、隐藏上方状态栏、永不熄屏等功能。亲测可用 1.隐藏底部状态栏        到android/fra...
  • wz_sky
  • wz_sky
  • 2016年07月25日 11:08
  • 2147

Android隐藏状态栏、导航栏

Android隐藏状态栏、导航栏 private void hideStatusNavigationBar(){ if(Build.VERSION.SDK_INT...
  • shenyuanqing
  • shenyuanqing
  • 2016年02月04日 22:21
  • 1956
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android动态显示和隐藏状态栏
举报原因:
原因补充:

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