我正在编写一个应用程序,其中我使用以下代码向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(Nougat)之前的所有操作系统上,此视图在切换活动时都会WindowManager
,我仍然可以在下次打开的活动中使用它。
出于某种原因,在Nougat上从屏幕上移除了视图。
问题:有谁知道为什么会发生这种情况,如何恢复之前系统上的先前行为?它是否与 Nougat 中添加的新自由形式窗口模式有关,如下所述:
Android Nougat’s freeform window mode: what it is and how developers can utilize it
答案 0 :(得分:1)
我想TYPE_TOAST标志中存在问题。我看到这个虫子的视图在Nougat上消失了。
您可以尝试使用TYPE_SYSTEM_ALERT标志