Android 动态壁纸触摸事件层次结构

标签 android touch live-wallpaper

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

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

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

最佳答案

遇到了同样的问题,最后查看了 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;
}

关于Android 动态壁纸触摸事件层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298458/

相关文章:

android - 按下后退按钮 android 时共享首选项数据丢失了吗?

java - 如何使用 android 使用 ip camera 拍照

jquery - 阻止 jQuery 在触摸设备上运行 mouseenter

uitableview - 在UITableView中禁用触摸交互

java - 为什么此设置 Activity 的 onSharedPreferenceChanged 方法为空?

android - 如何在自定义 View 中添加 View ?

android - IllegalArgumentException : No view found for id for fragment --- ViewPager in ViewPager

android - 如何找出用户触摸屏幕的位置?

android - 我真的需要在动态壁纸的渲染循环中在 SurfaceHolder 上同步吗

android - 动态壁纸可以在纵向模式下锁定屏幕吗?