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