Как программно добавить представление «Жесты Android» в пользовательское представление? - PullRequest
2 голосов
/ 26 мая 2010

У меня есть пользовательский вид, который работает нормально, и я пытаюсь сделать жесты в него. Наиболее распространенная техника, которую я вижу, - это добавить XML, такой как этот (из документов Android:

<android.gesture.GestureOverlayView
  android:id="@+id/myGestures"
  android:layout_width="fill_parent"
  android:layout_height="0dip"
  android:layout_weight="1.0"
  />

Мое представление находится в RelativeView, и когда я пытаюсь сослаться на этот GetureOverlayView, я получаю исключение.

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

mGestures = new GestureOverlayView(context, attrs);
mGestures.addOnGesturePerformedListener(this);

Но обратные вызовы никогда не вызываются.

Может ли кто-нибудь указать на мои ошибки, предложить лучший способ, который позволит мне получать обратные вызовы жестов и / или предложить диагностические подходы?

1 Ответ

3 голосов
/ 21 июня 2010

Привет, Я наткнулся на ваш вопрос, пытаясь найти решение той же проблемы: у меня есть собственное представление, датчик, с которым я не мог заставить работать жесты (пока не нашел ваш вопрос).

Мне удалось решить проблему, отсюда и этот ответ.

Я обнаружил, что мое представление возвращало события щелчка, но действие всегда было 0 для ACTION_DOWN ... Тогда как на моем другом макете, где работали жесты, я получал различные действия для любого отдельного жеста.

Я пошел дальше и взял linearlayout, который не удался, и вложил его в gestureOverlayView, используя ваш код выше. С одной лишь разницей в том, что я поместил всю линейную линейку в gestureoverlay. В приведенном выше примере gestureoverlay является отдельной сущностью, в которой нет ничего, что, вероятно, стало причиной ваших проблем.

Чтобы использовать его, я просто регистрирую свой слушатель жестов в режиме наложения следующим образом:

((GestureOverlayView) findViewById(R.id.myGestures)).setOnTouchListener(gestureListener);

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

BH

...