gpt4 book ai didi

android - 处理表盘中的触摸事件

转载 作者:行者123 更新时间:2023-11-29 15:55:26 24 4
gpt4 key购买 nike

我有一个基于最新 API 构建的表盘(扩展 CanvasWatchFaceService.Engine)。现在我想让触摸事件在表盘上有一个 Activity 区域,可以触摸它来打开设置等。CanvasWatchFaceService.Engine继承自WallpaperService.Engine,它声明了两个重要的方法:setTouchEventsEnabled(boolean)onTouchEvent(MotionEvent).

但即使我在 EngineonCreate() 方法中调用 setTouchEventsEnabled(true),我也从未收到过对 的调用onTouchEvent(MotionEvent) 在我的引擎实现中。

我做错了什么还是根本不可能?我知道一些提供 Activity 区域的表盘,但我不确定它们是基于最新的 API 还是基于已弃用的 API(使用布局和 GUI 元素)构建的。

最佳答案

在新的 Android Wear 1.3 中使用交互式表盘 API:

更新:

onCreate 中的 init 函数中只添加一行在你的 CanvasWatchFaceService.Engine 中发挥作用基类:

setWatchFaceStyle(new WatchFaceStyle.Builder(mService)
.setAcceptsTapEvents(true)
// other style customizations
.build());

并管理下的点击事件

@Override
public void onTapCommand(int tapType, int x, int y, long eventTime) { }

注意事项:

  • 您必须添加自己的代码才能找到哪些触摸目标(如果有)被点击 (tapType==TAP_TYPE_TAP)
  • 您只能检测单次短按,不能检测滑动或长按。
  • 通过检测TAP_TYPE_TOUCHTAP_TYPE_TOUCH_CANCEL不过,您可以猜出滑动手势 TAP_TYPE_TOUCH_CANCEL不提供导出坐标。

要获得更多控制,您唯一的选择是添加 SYSTEM_ALERT图层并根据您可以从 onVisibilityChanged 收集的信息打开/关闭它和 onAmbientModeChanged ...

关于android - 处理表盘中的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28323119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com