2013-11-13 3 views
1

У меня есть это:Управление Свиток с сенсорными событиями в SmartWatch 2

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

} 

В принципе, его работа, но и для отдельных прессов. Позволь мне объяснить.

Если вы нажмете экран и отпустите его в том же положении, чтобы не называть его «щелчком», оба лога запускаются, сначала нажмите «Пресса», затем отпустите.

Но я хочу управлять прокруткой, поэтому, если я нажимаю, затем перемещаю палец и отпускаю в другом месте экрана, я получаю только пресс-событие.

Я хочу знать начальную позицию при нажатии и в конце позиции, когда вы отпускаете, поэтому я могу прокрутить макет!

Как я могу это достичь?

Спасибо!

ответ

2

Но я хочу управлять прокруткой, поэтому, если я нажимаю, а затем перемещаю палец и отпускаю в другом месте экрана, я получаю только пресс-событие.

Я думаю, что это потому, что вы делаете событие салфетки, так и на выпуске это вызовет Control.Intents.SWIPE_DIRECTION_[UP|DOWN|RIGHT|LEFT] действие и не Control.Intent.TOUCH_ACTION_RELEASE.

Если вам не нужны события салфетки, вы можете удалить намерение Swipe из манифеста. В противном случае вы должны рассмотреть возможность использования SWIPE для управления прокруткой. Основное различие заключается в том, что при событиях Swipe вы не получаете величины салфетки, вы получаете только направление, но этого достаточно для большинства случаев.

+0

Спасибо за ответ, я думаю, что смогу сделать что-то, работая как с прикосновением, так и с салфеткой togheter. благодаря! –

1

SmartWatch 2 не работает последовательно в отношении обнаружения касания. Таким образом, не каждое событие TOUCH_ACTION_PRESS сопровождается событием TOUCH_ACTION_RELEASE (как это имеет место для SmartWatch 1), но за ним может последовать, например, событие SWIPE. Кроме того, события SWIPE слишком легко запускаются, поэтому любая попытка реализовать прокрутку по своему желанию не будет успешной.

Лучше всего использовать галерею и ListView для плавной прокрутки.

+0

Да, вы правы. Я отправлю то, что я, наконец, закончил ... –

0

Как говорили другие, «свиток» как есть, не поддерживается.

SDK хорош, но не имеет некоторых функций. Надеюсь, Sony обновит его в будущем, однако может быть уже слишком поздно.

Это то, что я закончил делать на моем приложении:

Я использовал TOUCH_ACTION_PRESS для сохранения нажмите действия в глобальном объекте, то я использовал SWIPE событие, чтобы получить направление.

В подпрограмме Swipe я спрашиваю, было ли событие PRESS, и если да, то я делаю «прокрутку» с направлением SWIPE.

Чтобы получить лучшее представление, я спрашиваю, где PRESS началось по оси Y, поэтому, если можно сказать, что нажатие началось в нижней части экрана, а салфетка была прокручена вверх, я перемещаю вид больше, чем если бы пресса начинается с половины экрана.

Это не очень гладко, но, я думаю, что нет лучшего способа это сделать. Другой вариант - использовать на экранных кнопках, но мне они не нравятся.

0

я не до конца понимал это, но пока я получаю три набора событий, когда я не получил какие-либо интерактивные объекты:

  1. Для простых нажатий: onTouch (ПРЕССЫ) с последующих onTouch (RELEASE)
  2. для пойла: onTouch (ПРЕССЫ) с последующим onSwipe()
  3. к сожалению, для очень короткого пойла, или поскользнулся краны: onTouch (PRESS) только

Оказывается отличаться, если у вас есть интерактивные объекты. Это модель я получаю, когда я делаю:

  1. Для простых нажатий: onTouch (PRESS) следует onTouch (RELEASE) затем onObjectClick
  2. Для всех пойла: onTouch (ПРЕСС) с последующим onSwipe()

поскольку onSwipe только дает направление, а не событие (с адресом), я не могу найти, как Удовлетворительный способ справиться с этим, кроме как обрабатывать все события, когда я нахожусь onTouch (PRESS), а затем отменить операцию крана, если есть продолжение вSwipe. В зависимости от того, что вы делаете, это отмена может быть легкой или действительно сложной - но если достаточно быстро пользователь никогда не заметит ...

Отключение салфетки в манифесте не помогает - вы просто теряете события onSwipe и грустно не получите onTouch (RELEASE).

Смежные вопросы