2016-10-24 2 views
0

Ich mache einen einfachen Lockscreen mit dem Addview in Windowmanager, obwohl ich erfolgreich die Lockscreen-Ansicht hinzugefügt habe, aber bevor die Ansicht hinzugefügt wird, wird eine weiße lästige Seite hinzugefügt, bevor die Ansicht angezeigt wird. Ich habe versucht, den Hintergrund der Ansicht auf andere Farbe zu setzen, aber es hat nichts beeinflusst, also denke ich, dass es etwas mit der Fensteransicht zu tun haben könnte, nachdem Hintergrundfarbe in der Aktivität geändert wurde, verzögerte addview, erschien es immer noch.Ein leerer weißer Bildschirm erschien beim Hinzufügen zum Fenstermanager

ps: wenn Ansicht entfernen, wenn ich vor beendete(), dann weiße Ansicht erschien, aber wenn Ansicht in destroyed entfernen, wird es ein wenig verzögert, aber die weiße Ansicht wird nicht angezeigt.

Wie kann ich diese weiße Ansicht bei addView/removeView entfernen/verstecken?

public static synchronized LockUtil getInstance(Activity act) { 
    if (mLockLayer == null) { 
     mLockLayer = new LockUtil(act); 
    } 
    return mLockLayer; 
} 

private LockUtil(Activity act) { 
    mActivty = act; 
    init(); 
} 

private void init() { 
    isLocked = false; 
    if (null == mWindowManager) { 
     mWindowManager = ((WindowManager) mActivty.getSystemService(Context.WINDOW_SERVICE)); 
    } 
    mLockViewLayoutParams = new WindowManager.LayoutParams(); 
    mLockViewLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; 
    mLockViewLayoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; 
    mLockViewLayoutParams.type = WindowManager.LayoutParams.TYPE_PHONE; 
    mLockViewLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
    mLockViewLayoutParams.windowAnimations = android.R.style.Animation_Translucent; 
} 

public synchronized void lock() { 
    if (mLockView != null && !isLocked) { 
     mWindowManager.addView(mLockView, mLockViewLayoutParams); 
     isLocked = true; 
    } 
} 

public synchronized void unlock() { 
    if (mWindowManager != null && isLocked) { 
     try{ 
      mWindowManager.removeView(mLockView); 
      isLocked = false; 
     }catch(IllegalArgumentException e){ 
      Logger.e("LockUtil unlock failed:"+e.getMessage()); 
     } 
    } 
    mActivty = null; 
} 

Antwort

1

Nachdem ich einige der Forschung machen, der weiße Hintergrund ist die Hintergrundfarbe für die Aktivität (Fenster) so, um es zu entfernen, brauchen wir nur die Farbe transparent in das Thema ein.

<style name="Theme.Transparent" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
</style> 
Verwandte Themen