我正在编写一个应用程序,其中使用以下代码在WindowManager中添加视图:

private final FloatingBubbleView mBtn;
FloatingBubbleView iv = new FloatingBubbleView(context);
this.mBtn = iv;
this.mWm = (WindowManager) mAppContext.get().getSystemService(Context.WINDOW_SERVICE);
mWm.addView(mBtn, mLp);


布局参数配置:

final WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.width = iv.getLayoutParams().width;
lp.height = iv.getLayoutParams().height;
lp.type = WindowManager.LayoutParams.TYPE_TOAST;
lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
lp.format = PixelFormat.TRANSLUCENT;
lp.gravity = Gravity.TOP | Gravity.LEFT;
lp.x = 0;
lp.y = 100;


在Android 7.0(牛轧糖)之前的所有操作系统上,此视图在切换活动时均遵循WindowManager,我仍然可以在下一个打开的活动中使用它。

在牛轧糖上,由于某些原因,视图已从屏幕上删除。

问题:是否有人知道为什么会发生这种情况,以及如何还原以前系统上的先前行为?它与Nougat中添加的新的自由形式窗口模式有关,在这里进行了描述:

Android Nougat’s freeform window mode: what it is and how developers can utilize it

最佳答案

我认为是TYPE_TOAST标志中的问题。我在牛轧糖上看到了这个视图消失的错误。

您可以尝试使用TYPE_SYSTEM_ALERT标志

关于android - 为什么仅在牛轧糖中在 Activity 过渡时删除了向WindowManager添加的 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44181108/

10-09 01:42