ノート3|は、ワンウェストワーク・アンドリーブtes ChangdとオンスSystemUivisity Changeで待ち受けている状態バーページの隠し表示と表示、ダイナミック表示と隠しステータスバーを通じて


住所
CSDNアドレス:http://blog.csdn.net/xiangyong_1521/articale/detail/51333437
作業中の一つのニーズは、SystemUi(ステータスバー)の表示と非表示を監視し、動的に制御する必要があります.これは需要の整理です.
目次
  • onwindowAttributes Changed方法
  • OSystemUiVisibility Change Listene方法
  • set SystemUiVisibility制御
  • 一、ワンウェットワーク・アンドリーブtes Changed方法監聴
    @Override  
    ublic void onWindowAttributesChanged(LayoutParams params) {  
    super.onWindowAttributesChanged(params);  
    Log.e("Even","    "+getWindow().getAttributes().flags);  
    if(getWindow().getAttributes().flags==8455424){  
        Log.i("TAG","    ");              
    }else if(getWindow().getAttributes().flags==8454400){  
        Log.i("TAG","     ");             
    }  
    この方法はかなり無理です.8455424と8454400の二つのデータは権威のある数値ではないので、通用を保証できません.しかも、前期の使用時には正常なライフサイクル内でこの方法は一回しか呼び出されないことが分かりました.だから別の道を探さなければなりません.
    二、OnSystemUiVisibility Change Listene方法監督
    @Override  
        public void onSystemUiVisibilityChange(int visibility) {  
            if (visibility==View.SYSTEM_UI_FLAG_FULLSCREEN||visibility==View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) {  
                Log.i("TAG","    ======");    
            }else{  
                Log.i("TAG","     ======");  
            }  
        }  
    すぐにこの方法を見つけました.完璧に実行しますが、まずモニターを開けてください.このモニターは30分の価値があります.
  • setOnSystemUiVisibilityChangeListener(this);
  • 展開:SystemUiVisibility方法が導入できる実務参:
    View.SYSSTMUSIFLAGVISIBLE:ステータスバーを表示し、Activityはフルスクリーン表示しない(状態がある通常の状態に戻す).
    View.INVISIBLE:ステータスバーを隠しながら、Activityがフルスクリーンで表示されます.View.SystemIFULLSCREEN:Activityフルスクリーン表示で、ステータスバーが隠れて上書きされます.
    View.SYSTEMUIFULLSCREEN:Activityフルスクリーン表示ですが、ステータスバーは隠れません.ステータスバーは依然として見られます.Activityトップレイアウト部分は状態によって遮られます.
    View.SYSTEMUIFROTHIDENAVIGATION:効果はView.SYSTEMUIFUGLAAY OUT FULLSCREENView.SYSTEMUILAYOUTFLAGSと同じです.
    View.SYSTEMUIFRLAGLAY OUT FLLSCREENView.SYSSTEMIGHIDENIGATION:仮想キー(ナビゲーションバー)を隠します.物理ボタンの代わりに仮想ボタンを使う携帯がある.View.SYSSTMUIFLAGLOWPROFILE:ステータスバーは低エネルギー表示状態(low profileモード)を示しています.ステータスバーにはいくつかのアイコンが表示されていません.
    三、set SystemUiVisibilityコントロールステータスバーの表示と非表示
    View類は、set SystemUiVisibilityとget SystemUiVisibility方法を提供しており、この2つの方法は、ステータスバーの動的表示または非表示の動作を実現し、ステータスバーの現在の視認性を取得する.
    テストの主要コード
    package com.example.handlestatusbar;  
      
    import android.annotation.SuppressLint;  
    import android.app.Activity;  
    import android.os.Bundle;  
    import android.view.Menu;  
    import android.view.MenuItem;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
    import android.widget.RelativeLayout;  
    import android.widget.Toast;  
      
    @SuppressLint("NewApi")  
    public class MainActivity extends Activity implements OnClickListener  
    {  
      
        private RelativeLayout mRLayout;  
        private Button mBtn1, mBtn2, mBtn3, mBtn4, mBtn5, mBtn6, mBtn7, mBtn8;  
          
        @Override  
        protected void onCreate(Bundle savedInstanceState)   
        {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
              
            mRLayout = (RelativeLayout)findViewById(R.id.content);  
            mBtn1 = (Button)findViewById(R.id.btn1);  
            mBtn2 = (Button)findViewById(R.id.btn2);  
            mBtn3 = (Button)findViewById(R.id.btn3);  
            mBtn4 = (Button)findViewById(R.id.btn4);  
            mBtn5 = (Button)findViewById(R.id.btn5);  
            mBtn6 = (Button)findViewById(R.id.btn6);  
            mBtn7 = (Button)findViewById(R.id.btn7);  
            mBtn8 = (Button)findViewById(R.id.btn8);  
              
            mBtn1.setOnClickListener(this);  
            mBtn2.setOnClickListener(this);  
            mBtn3.setOnClickListener(this);  
            mBtn4.setOnClickListener(this);  
            mBtn5.setOnClickListener(this);  
            mBtn6.setOnClickListener(this);  
            mBtn7.setOnClickListener(this);  
            mBtn8.setOnClickListener(this);       
        }  
          
        @Override  
        public void onClick(View v)  
        {  
            // TODO Auto-generated method stub  
            switch (v.getId())   
            {  
            case R.id.btn1:  
                //     ,Activity     (           )  
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);      
                break;  
            case R.id.btn2:  
                //     ,  Activity         
                mRLayout.setSystemUiVisibility(View.INVISIBLE);  
                break;  
            case R.id.btn3:  
                //Activity    ,          。  
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);  
                break;        
            case R.id.btn4:  
                //Activity    ,           ,       ,Activity              
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);  
                break;  
                  
            case R.id.btn5:  
                // mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);  
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);  
                break;  
            case R.id.btn6:  
                // mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);  
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_LAYOUT_FLAGS);  
                break;  
            case R.id.btn7:  
                //      (   )  
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);  
                break;  
            case R.id.btn8:  
                //             (low profile  ),              。  
                mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);  
                break;  
            }  
        }  
      
    } 
    EDM
    もっといい方法や疑問点があれば、いつでも交流してください.