#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; }
Комментариев нет:
Отправить комментарий