2014-11-17 3 views
1

Итак, у меня есть к вам специальный вопрос: Как поймать кнопки, когда я использую действие перемещения? Как я могу обрабатывать перемещения на экране для кнопок (или других элементов)?Использование MotionEvent (ACTION_MOVE)

Я использовал MotionEvent (ACTION_MOVE), но с помощью этого фрагмента кода я не получаю желаемого результата

в OnCreate

btn1.setOnTouchListener(this); //for all of buttons on Activity 

в onTouch

switch(event.getAction()) { 
    case MotionEvent.ACTION_MOVE: 
     //actions 
    break; 
} 

действия будут для первой кнопки, с которой начинается движение. В другом случае ничего не произойдет

В это время я думаю, что я могу использовать ACTION_MOVE для своей деятельности не для каждой кнопки или других элементов и сохранять координаты кнопок (вверху слева и внизу справа) в arraylist. И когда начинается движение, я мог бы сравнить эти координаты и реальные координаты движения. Итак, я мог знать, на каких кнопках было движение.

Возможно, я изобретаю колесо. Вот почему я прошу вас о помощи)

+0

Извините, я вижу строки слов, но это просто не имеет смысла. Вы хотите использовать кнопки coördinates для создания перетаскивания? Какие? –

+0

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

ответ

0

Не могли бы вы объяснить более ясно? Из того, что я вижу, вам, вероятно, нужно сделать две вещи: Сначала добавьте слушателя ко всем кнопкам и пусть ваша деятельность реализует onTouchListener.
Во-вторых, вам нужно сохранить начальную координату для каждой кнопки в MotionEvent.ACTION_DOWN (если я прав насчет синтаксиса).
Таким образом, у вас будет доступ ко всем вашим кнопкам, и вы можете правильно их сохранить.

+0

сверху в комментарии –

+0

Вы можете получить свой идентификатор кнопки, когда Touch произойдет, чтобы вы были в порядке. Думаю. –

+0

с использованием V.getId() –

0

Вы получите представление внутри сенсорного прослушивателя, с помощью которого вы можете идентифицировать.

Button btn1 = (Button) findViewById(R.id.btn1); 
Button btn2 = (Button) findViewById(R.id.btn2); 
Button btn3 = (Button) findViewById(R.id.btn3); 

btn1.setOnTouchListener(touchListener); 
btn2.setOnTouchListener(touchListener); 
btn3.setOnTouchListener(touchListener); 

private OnTouchListener touchListener = new OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      switch (v.getId()) { 
      case R.id.btn1: 
       //Button 1 
       break; 

      case R.id.btn2: 
       //Button 2 
       break; 

      case R.id.btn3: 
       //Button 3 
       break; 
      } 
     } 
     return false; 
    } 
}; 
+0

, но это правильно работает только с первой перемещенной кнопкой (и если движение начинается с него), не для всех, где происходит движение. И я не добавляю случаи, потому что есть одно действие для обработки движения для всех кнопок –