繁体   English   中英

向windowmanager添加视图时出现空白屏幕

[英]A blank white screen appeared when addview to windowmanager

我正在使用windowmanager中的addview做一个简单的锁屏,尽管我成功添加了锁屏视图,但是在添加视图之前,在显示视图之前添加了一个白色的烦人页面。 我试图将视图背景设置为其他颜色,但它没有影响任何东西,所以我认为这可能与窗口视图有关,在活动中更改背景颜色后,延迟添加视图,它仍然出现。

ps:当我在finish()之前调用时移除视图时,然后出现白色视图,但是当在ondestroyed中移除视图时,它将延迟一点,但是白色视图将不会出现。

在addView / removeView时如何删除/隐藏此白色视图?

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

在进行了一些研究之后,白色背景是活动(窗口)的背景色,因此要删除它,我们只需要在主题中将颜色设置为透明即可。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM