2014-06-13 9 views
10

È possibile ottenere a livello di programmazione quali flag sono attualmente attivi su una finestra?Ottieni bandiere attive sulla finestra Android

Siamo in grado di abilitare bandiere con:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 

Fa API fornisce un modo per ottenere una lista di bandiere attualmente attivi? Grazie

risposta

30

È possibile utilizzare:

int flags = getWindow().getAttributes().flags; 

Si può vedere che è utilizzato dal Window.setFlags() implementazione:

public void setFlags(int flags, int mask) { 
    final WindowManager.LayoutParams attrs = getAttributes(); 
    attrs.flags = (attrs.flags&~mask) | (flags&mask); 
    ... 

Per determinare se sono impostate le singole bandiere, è necessario utilizzare bit a bit e. Per esempio:

if ((flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) != 0) ... 
+0

sì ma mi restituisce un int che riguardano doen't Nthing ...: S – iGio90

+1

@ iGio90 l'int contiene tutte le bandiere. hai solo bisogno di un'operazione bit a bit per estrarli. Modificata la risposta, controlla l'esempio. – matiash

+0

funzionante !!!! grazie! – iGio90