Scroll 在SmartWatch 2中使用触摸事件管理滚动

Scroll 在SmartWatch 2中使用触摸事件管理滚动,scroll,touch,sony,sony-smartwatch,Scroll,Touch,Sony,Sony Smartwatch,我有这个: @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());

我有这个:

 @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());            
    } 

}
基本上,它的工作,但为单压力机。让我解释一下

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

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

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

我怎样才能做到这一点

谢谢

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

我认为这是因为您正在执行一个滑动事件,因此在释放时,它将触发
控件.Intent.swip_方向[向上|向下|右|左]
操作和控件.Intent.TOUCH_操作\u释放


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

SmartWatch 2在触摸检测方面的功能不一致。因此,并非每个
TOUCH\u ACTION\u PRESS
事件之后都会发生
TOUCH\u ACTION\u RELEASE
事件(与SmartWatch 1的情况相同),但它之后可能会发生
swip
事件。另外,
滑动
事件太容易触发,因此任何想要实现滚动的尝试都不会成功

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

正如其他人所说,不支持“按原样滚动”

SDK不错,但是缺少一些功能。我希望索尼在将来更新它,但是,现在可能太晚了

这就是我在我的应用程序上所做的:

我使用
TOUCH\u ACTION\u PRESS
将按下操作保存在全局对象中,然后使用
SWIPE
事件获取方向

在刷卡例程中,我询问是否已执行了
事件,如果已执行,则使用刷卡方向进行“滚动”

为了获得更好的感觉,我询问了
按下按钮在Y轴上的起始位置,因此,如果让我们说按下按钮从屏幕底部开始,并且向上滑动,我移动视图的次数比按下按钮从半屏幕开始的次数要多


这不是很顺利,但是,我认为没有更好的办法。另一个选项是使用屏幕上的按钮,但我不喜欢它们。

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

  • 对于简单的点击:按onTouch(按下),然后按onTouch(释放)
  • 对于滑动:onTouch(按),然后是onSwipe()
  • 不幸的是,对于非常短的敲击或滑动的敲击: 仅限onTouch(按)按钮
  • 如果您有可单击的对象,则它似乎有所不同。当我这样做时,我得到的模式是:

  • 对于简单的点击:点击onTouch(按),然后点击onTouch(释放),然后点击OnObject
  • 对于所有滑动:按onTouch(按),然后按onSwipe()
  • 由于onSwipe只提供方向,而不提供事件(带位置),因此我无法找到令人满意的处理方法,除非在我进入onTouch(按下)时处理所有事件,然后在有后续onSwipe时撤消点击操作。这取决于你在做什么,撤销可能很容易,也可能很棘手-但是如果足够快,用户将永远不会注意到


    在清单中关闭刷卡没有帮助-您只是丢失了onSwipe事件,遗憾的是没有获得onTouch(释放)。

    谢谢您的回答,我想我可以同时使用触摸和刷卡来做一些事情。谢谢