【问题标题】:How to avoid having the live wallpaper respond to touch events on recent tasks on Lollipop如何避免让动态壁纸响应 Lollipop 上最近任务的触摸事件
【发布时间】: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


    【解决方案1】:

    如何设置

        setTouchEventsEnabled(false);
    

    在您的 WallpaperService Engine 类中,当您不想处理触摸时,将其设置为 true。

    【讨论】:

    • 当然,但问题不在于。问题是我没有收到显示最近任务的 Lollipop 事件,所以我不知道何时禁用以及何时启用...... :( 我已经编辑了问题以进一步澄清它。
    • 顺便说一句,如果我愿意,我可以忽略触摸事件,而不是使用 "setTouchEventsEnabled(false)" 。同样,问题是我不知道如何去做。对于这些场景,我没有找到任何触发因素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多