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