2016-06-15 11 views
1

私はオーバーレイを作成します。システムuiモードを変更した後で画面オーバーレイを変更する方法(フルスクリーン、ナビゲーション非表示)?

mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); 
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    /*The parent view (actually the root view) the will be added in front of all the windows on the screen*/ 
    mOverlayView = (RelativeLayout) inflater.inflate(R.layout.overlay_control, null); 

     mWindowManager.getDefaultDisplay().getSize(size); 
     mWindowSize = new Size(size.x, size.y); 

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
        WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | 
      WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      PixelFormat.TRANSLUCENT); 
    params.gravity = Gravity.TOP | Gravity.LEFT; 
    mWindowManager.addView(mOverlayView, params); 

は、私は、システムのUIの可視性が変更された場合、オーバーレイを移動する必要があります。ビューのためにそれを検出する可能性がありますが(documentation)、オーバーレイでは機能しません。だから私は、デバイスのモードが変更されたかどうかを検出するコールバックが必要です。

答えて

0

私はそれを行う方法を見つけました) AndroidではOnSystemUiVisibilityChangeListenerがありますが、widthまたはheightのmatch_parent値を持つビューがない場合は機能しません。だから、私はそのようなオーバーレイを作成し、1ピクセルの高さとmatch_parent幅にし、OnSystemUiVisibilityChangeListenerを追加しました。

関連する問題