背景
我制作了一个可以处理触摸事件的动态壁纸。
问题
在某些情况下,我不希望它处理触摸(或监听其他事件)。这有助于防止奇怪的绘图,也可以节省一点电池。
例如,在 Lollipop 上,我注意到当您显示最近的任务屏幕时,动态壁纸仍然具有焦点。这在棒棒糖之前没有发生,因为最近的任务屏幕接管了屏幕上的所有内容。
另一个例子是壁纸选择器,即使你只显示所有动态壁纸的缩略图,你仍然会显示你自己的并处理触摸事件,就像用户在启动器上一样。
但是,当您显示通知栏或启动器的菜单时(通过按菜单按钮),动态壁纸将不会获得任何触摸事件。
您可以在其他动态壁纸上看到这些问题,例如“Magic fluids free”。
同样,问题是在某些情况下,无法禁用触摸事件,因为您无法知道它们何时发生(最近的任务和壁纸选择器就是这样的例子)。
我试过的
没什么可做的。Engine 类的所有方法都找不到我写过的场景状态:
onOffsetsChanged, onVisibilityChanged, onSurfaceChanged, onSurfaceRedrawNeeded, onOffsetsChanged
问题
有没有办法克服这个问题?如果动态壁纸不在焦点上,要停止收听事件?