2015-04-17 2 views
0

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

Сейчас это действие - это просто показать количество указателей, обнаруженных как тост.

Я использую метод getPointerCount(), но по какой-то причине я получаю несколько тостов. Например, три пальцевого крана дают мне тосты для двух и трех пальцевых кранов, четыре пальцевых ключа дают мне тосты на два, три и четыре пальца и т. Д.

Я не могу на всю жизнь понять, почему это так. Ключ с четырьмя пальцами должен отображать ОДИН тост, говорящий «4», а не цикл через 2, 3 и 4! Любая помощь будет принята с благодарностью.

public boolean onTouchEvent(MotionEvent event) 
{ 
    int action = event.getAction(); 

    switch(action & MotionEvent.ACTION_MASK) 
    { 
     case MotionEvent.ACTION_POINTER_DOWN: 

      int count = event.getPointerCount(); 

      if (count == 2) { 
       finish(); 
      } 

      else if (count == 4) { 
       Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show(); 
      } 

      else if (count == 3) { 
       Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show(); 
      } 
      break; 
    } 
    return true; 
} 

P.S, я попытался переместить код за пределы заявления выключателя, и причудливо, это приводит к тому, тостов сосчитать вверх и вниз!

ответ

0

Вы думаете о кранах как о дискретных событиях, но Android MotionEvents поставляется как поток. Чтобы получить ACTION_POINTER_DOWN с тремя пальцами, необходимо сначала перенести указатель действия двумя пальцами. (Если вы думаете об этом, все три пальца не спускаются в одно и то же время, даже если это возможно, вы не получите их таким образом).

При входе в каждое событие движения с

Log.i("test", event.toString()); 

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

+0

спасибо чувак, очень ценится. Я посмотрю журналы и посмотрю, смогу ли я это понять. – AVStark