1. 程式人生 > >Android動態顯示和隱藏狀態列

Android動態顯示和隱藏狀態列

簡述:

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;
        }
    }
}