#android #touch #multi_touch
Практикуюсь, решил сделать что-то типа гитары, но не придумаю, как правильно обрабатывать нажатия. Есть 6 струн и надо, когда палец касается верхней струны и идет вниз (зацепляя остальные), чтобы к ним всем, по очереди, применялись анимации. Смог сделать это только при одиночном касании, если по очереди нажимать на струны то все работает, если прислонить палец о водить по экрану то нет. @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { switch (v.getId()) { case R.id.string1: str1.startAnimation(touch_string); return false; case R.id.string2: str2.startAnimation(touch_string); return false; case R.id.string3: str3.startAnimation(touch_string); return false; case R.id.string4: str4.startAnimation(touch_string); return false; case R.id.string5: str5.startAnimation(touch_string); return false; case R.id.string6: str6.startAnimation(touch_string); return false; } } return false; } Игрался с различными экшенами MotionEvent, но ничего не получилось, как же это правильно реализовать? Буду благодарен за ответ!
Ответы
Ответ 1
Потому что в данном случае нужно отслеживать не ACTION_DOWN, а ACTION_MOVE . Определите нужную область, повесьте слушатель и обработайте как необходимо. К примеру, берете положение и при совпадении в определенных координатах/промежутке координат выполняйте действие @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_MOVE: x = event.getRawX(); y = event.getRawY(); //TODO обработать нужные места ... break; } return true; }
Комментариев нет:
Отправить комментарий