1

我有这个:

 @Override
 public void onTouch(final ControlTouchEvent event) {
    int action = event.getAction();

    if (action == Control.Intents.TOUCH_ACTION_PRESS) {
        Log.d("Touch Test", "Touch: Press at " + event.getX() + " - " + event.getY());

    }
    else if (action == Control.Intents.TOUCH_ACTION_RELEASE) {
        Log.d("Touch Test", "Touch: Release at " + event.getX() + " - " + event.getY());            
    } 

}

基本上,它的工作原理是单机。让我解释。

如果您按下屏幕并在同一位置释放,以免将其称为“点击”,两个日志都会被触发,先按下,然后释放。

但是我想管理滚动,所以,如果我按下,然后移动手指,然后在屏幕的其他位置释放,我只会触发按下事件。

我想知道按下时的开始位置和释放时的结束位置,所以我可以滚动布局!

我怎样才能做到这一点?

谢谢!

4

4 回答 4

2

但是我想管理滚动,所以,如果我按下,然后移动手指,然后在屏幕的其他位置释放,我只会触发按下事件。

我认为那是因为您正在执行滑动事件,所以在释放时它将触发Control.Intents.SWIPE_DIRECTION_[UP|DOWN|RIGHT|LEFT]动作而不是Control.Intent.TOUCH_ACTION_RELEASE。

如果您不需要滑动事件,您可以从清单中删除滑动意图。否则,您应该考虑使用 SWIPE 意图来管理滚动。主要区别在于,对于 Swipe 事件,您不会获得滑动的幅度,您只能获得方向,但这对于大多数情况来说应该足够了。

于 2013-11-13T12:39:26.457 回答
1

SmartWatch 2 在触摸检测方面的功能不一致。因此,并非每个TOUCH_ACTION_PRESS事件都跟着一个TOUCH_ACTION_RELEASE事件(就像 SmartWatch 1 的情况一样),但它可以跟着一个SWIPE事件,例如。此外,SWIPE事件太容易触发,因此任何实现滚动的尝试都不会成功。

最好的办法是使用 Gallery 和 ListView 进行平滑滚动。

于 2013-11-15T22:45:41.857 回答
0

我还没有完全理解这一点,但是当我没有任何可点击的对象时,我会收到三组事件:

  1. 对于简单的点击:onTouch(PRESS)后跟onTouch(RELEASE)
  2. 对于滑动:onTouch(PRESS)后跟onSwipe()
  3. 不幸的是,对于非常短的滑动或滑动水龙头: 仅onTouch(PRESS)

如果您有可点击的对象,它似乎会有所不同。这是我这样做时得到的模式:

  1. 对于简单的点击:onTouch(PRESS)然后onTouch(RELEASE)然后onObjectClick
  2. 对于所有滑动:onTouch(PRESS)后跟onSwipe()

由于 onSwipe 只给出方向而不给出事件(带位置),我找不到令人满意的处理方法,除了在我打开 onTouch(PRESS) 时处理所有事件,然后如果有后续 onSwipe 则撤消点击操作. 根据您正在执行的操作,此撤消可能很容易或非常棘手 - 但如果速度足够快,用户将永远不会注意到......

关闭清单中的滑动无济于事-您只会丢失 onSwipe 事件,遗憾的是没有获得 onTouch(RELEASE)。

于 2014-01-08T10:30:42.893 回答
0

正如其他人所说,不支持“滚动”。

SDK很好,但缺少一些功能。我希望索尼将来更新它,但是,现在可能为时已晚

这就是我在我的应用程序上结束的操作:

我使用 aTOUCH_ACTION_PRESS将按下操作保存在全局对象中,然后使用SWIPE事件获取方向。

在 Swipe 例程中,我询问PRESS事件是否已创建,如果是,我使用 SWIPE 方向进行“滚动”。

为了获得更好的感觉,我询问PRESS从 Y 轴开始的位置,所以,如果让我们说按下从屏幕底部开始,并且向上滑动,我移动视图比按下从半屏开始时更多.

它不是很顺利,但是,我认为没有更好的方法可以做到这一点。另一种选择是使用屏幕按钮,但我不喜欢它们。

于 2013-11-16T13:49:30.690 回答