Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

Обработка касаний (струны в гитаре)

#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; }

Комментариев нет:

Отправить комментарий