【问题标题】:Android Live Wallpaper Touch Event HierarchyAndroid 动态壁纸触摸事件层次结构
【发布时间】:2010-11-28 19:04:25
【问题描述】:

我有一个动态壁纸,它使用各种屏幕触摸来触发某些事件。目前它正在工作,但我似乎得到了所有的触摸事件。例如,当用户触摸图标以启动应用程序时,我似乎也收到了该事件。

是否可以确定用户是否触摸了背景屏幕(即图标间的间隙),以便我只能在那个时候采取我的行动而忽略其他人。

如果做不到这一点,(并且假设——可能是错误的——如果我排在队列的第一个而不是屏幕上没有其他应用程序在我上面)我可以确定我在触摸事件队列中的位置,以便我可以仅当我排在队列中的第一个时才采取行动?
或者请有其他建议。 谢谢 理查德

【问题讨论】:

    标签: android touch live-wallpaper


    【解决方案1】:

    遇到了同样的问题,最后查看了 Nexus 壁纸的源代码,看看它是如何实现的。

    我认为无法确定实际的主屏幕是否消耗了触摸。但是,当您点击空白区域时,默认的 Android 主屏幕确实会向壁纸发送命令。所以在你的引擎中,你可以写:

    @Override
    public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested) {
        if (action.equals(WallpaperManager.COMMAND_TAP)) {
            // do whatever you would have done on ACTION_UP
        }
        return null;
    }
    

    【讨论】:

    • 完美 :) - 正是我想要的 - 谢谢 - 请告诉我你在哪里找到 Nexus 代码 - 理查德
    • 谢谢 - 我要开始自学了 :)
    • 这不适用于三星 Galaxy S II - 壁纸仍会收到该事件。在其他设备上运行良好。