Как отследить нажатие на экран в java если у меня нет View, а объекты я рисую на canvas

Как отследить нажатие на экран если у меня не используется Xml и я рисую все на canvas в классе GameView? Заранее спасибо.


Ответы (3 шт):

Автор решения: Komdosh

Можете переопределить метод onTouchEvent в View

@Override
public boolean onTouchEvent(MotionEvent ev) {
    final int action = ev.getAction();
    switch (action & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN: {
            break;
        }
        case MotionEvent.ACTION_MOVE: {
            break;
        }
        case MotionEvent.ACTION_UP: {
            break;
        }
        case MotionEvent.ACTION_CANCEL: {
            break;
        }
        case MotionEvent.ACTION_POINTER_UP: {
            break;
        }
    }

    return true;
}
→ Ссылка
Автор решения: Barmaley

Попробуйте Activity.onUserInteraction() - работает при любом нажатии в пределах Activity, можно также Activity.onTouchEvent() - но он вызывается только если не обработано касание в View внутри Activity

→ Ссылка
Автор решения: Tiarait

Неизвестно что за либа и что с себя представляет GameView, по этому точного ответа не будет. Но если у вас есть доступ к активности тогда вы можете получить доступ и к родительскому View. К примеру

getActivity().findViewById(android.R.id.content).getRootView()

или

getActivity().getWindow().getDecorView().findViewById(android.R.id.content)

или

getActivity().getWindow().getDecorView().getRootView()

Ну а даль к полученному view добавить ваш слушатель .setOnTouchListener()

→ Ссылка