2016-06-15 4 views
1

I Overlay erstellen:Wie wird das Bildschirm-Overlay geändert, nachdem der System-Ui-Modus geändert wurde (Vollbild, Navigation ausblenden)?

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

Ich brauche Overlay zu bewegen, wenn das System UI Sichtbarkeit geändert. Es gibt die Möglichkeit, es zu erkennen (documentation) für die Ansicht, aber es funktioniert nicht für Overlay. Ich brauche also nur einen Rückruf, um festzustellen, ob sich der Modus des Geräts geändert hat.

Antwort

0

Ich fand den Weg, es zu tun) In Android gibt es OnSystemUiVisibilityChangeListener, aber es funktioniert nicht, wenn es keine Ansicht gibt, die Match_parent Wert der Breite oder Höhe hat. Also habe ich ein solches Overlay erstellt und es zu 1 px height und match_parent width gemacht und OnSystemUiVisibilityChangeListener hinzugefügt.

Verwandte Themen