W poprzedniej wersji naszej aplikacji mieliśmy skaczącą piłkę, przydałaby się teraz obsługa ekranu dotykowego. Spróbujemy zatrzymać piłkę palcem.

Jest to dość proste. W klasie

1
class Obraz2d extends View

która znajduje się wewnątrz naszego Activity i służyła nam do rysowania w aplikacji Canvas, oraz do animacji w aplikacji z wątkiem teraz musimy dodać jedną metodę:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      @Override
        public boolean onTouchEvent(MotionEvent event) {
            super.onTouchEvent(event);
            int action=event.getActionMasked(),
                X=Math.round(event.getX()),
                Y=Math.round(event.getY()); //informacje o zdarzeniu: rodzaj (action) i pozycja (X,Y)
            switch (action) {
             case MotionEvent.ACTION_DOWN:
                    if (game!=null) game.pointerPressed(X,Y);
                    invalidate();
                break;
             case MotionEvent.ACTION_UP:
                    if (game!=null) game.pointerReleased(X,Y);
                    invalidate();
                break;
// tu inne rodzaje akcji
             default:
                break;
        }

        invalidate();
        return true;
        }

Metody tej nigdzie nie wywołujemy. Android wywoła ją sam zawsze, kiedy uderzymy palcem w ekran, podając jako parametr obiekt event, który posiada zapisane wszystkie parametry uderzenia (miejsce, siła itp.). W naszym wypadku zmienna pozx przechowuje współrzędną X animowanego obiektu, który zostanie przesunięty (skokiem) do miejsca uderzenia event.getX().

@Override oznacza, że nadpisujemy obiekt ze źródłowej klasy View, którą to nasza klasa Grafika2d rozszerzyła o nowe metody. Podobnie było z metodą onDraw(). A metoda invalidate() odświeży grafikę.