我在服务中创建了一个视图,它始终在 android 中的每个应用程序之上运行。
最初,服务的行为是 TYPE_SYSTEM_ALERT 。
WindowManager.LayoutParams layparams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
layparams .gravity = Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL;
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(serviceView, layparams );
我在运行时更改服务的行为意味着在触摸时在 TYPE_SYSTEM_ALERT 和 TYPE_SYSTEM_OVERLAY 之间切换。当我触摸视图参数之外和触摸视图参数内部时,会发生切换。
layparams .type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
Using updateViewLayout(serviceView, layparams )
问题:当我触摸视野之外时,第一次触摸只是激活 TYPE_SYSTEM_OVERLAY ,然后外部应用程序工作正常。当 TYPE_SYSTEM_OVERLAY 工作时,当您在视图内触摸时,它将触发视图后面的对象的动作,而不是视图的动作。但是当你一旦触摸视图 TYPE_SYSTEM_ALERT 将被应用,现在视图将正常运行。
当前实现:当在布局参数之间进行切换时,我必须触摸两次才能完成该特定操作。