11. Canvas és rajzolás a képernyőre

A mai szakkörön a képernyőre rajzolással ismerkedtünk meg.

Rajzolás Canvasra

Rajzolás Canvasra

View

Ahhoz, hogy a képernyőre rajzolhassunk, szükségünk lesz egy saját View classra (mint pl a Button vagy a TextView). A SurfaceView biztosítja nekünk a hozzáférést a View Canvas objektumához, amit aztán az Android megjelenít az Activity-ben a View helyén. Ezért ezt az osztályt kiegészítjük (extend) és csinálunk egy MyView class-t.

Layout

Layout

A View-t hozzá kell adni az Activity-hez, ezt vagy a layout xml file-ban, vagy dinamikusan a Java file-ban a setContentView után lehet.

Canvas

Az Android keretrendszer biztosít nekünk függvényeket és classokat a rajzolás leegyszerűsítéséhez. A Canvas class a háttérben egy Bitmapet kezel, ami tárolja a képernyőre rajzolt pixelek RGB értékeit.

Egy canvas objektumon meghívhatunk különböző draw függvényeket, pl drawCircle, drawRectangle, drawLine, drawColor.

Koordináta rendszer

Koordináta rendszer

A rajzoláshoz minden esetben szükség van egy Paint objektumra, ami az alakzat színét, a vonal vastagságát, szöveget szabályozza. Színt a Color segédosztállyal tudunk csinálni, ahol vagy egy előre definiált színt használunk (Color.BLACK) vagy RGB kóddal sajátot adunk meg (Color.rgb(128, 255, 0)).

Sin and Cos

A szakkörön a beépített draw függvényeken kívül saját kör és spirál rajzoló függvényt írtunk szögvügvények segítségével. Ez a rész nehezebb és nem kötelező, de ajánlott.

A számításokhoz a Java beépített Math könyvtárát használtuk:

  • Math.sin(radians) – kiszámolja a radians szögszinuszát
  • Math.cos(radians) – kiszámolja a radians szög koszinuszát
  • Math.toRadians(degree) – a degree szöget átváltja radianba. (2π = 360°)
Egységkör

Egységkör

A kód megtalálható a szokásos helyen:

https://github.com/Dawars/Trefort-Android-Szakkor/tree/master/Szakkor11