为什么仅在Nougat中为活动转换添加了WindowManager的视图?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么仅在Nougat中为活动转换添加了WindowManager的视图?相关的知识,希望对你有一定的参考价值。
我正在编写一个应用程序,我在其中使用以下代码向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
答案
我想TYPE_TOAST标志中存在问题。我看到这个虫子的视图消失在Nougat上。
您可以尝试使用TYPE_SYSTEM_ALERT标志
以上是关于为什么仅在Nougat中为活动转换添加了WindowManager的视图?的主要内容,如果未能解决你的问题,请参考以下文章