... | ... | @@ -74,7 +74,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 |
|
|
}
|
|
|
```
|
|
|
|
|
|
Trieda bude obsahovať atribút typu _Circle_.
|
|
|
Trieda bude obsahovať atribút typu _Circle_. Bude mať aj kľúčové slovo `lateinit`, ktoré definuje, že atribút sa nastaví na konkrétnu hodnotu neskôr.
|
|
|
|
|
|
V metóde _onDraw(canvas: Canvas)_ vykreslíme kruh:
|
|
|
|
... | ... | @@ -93,13 +93,13 @@ private val paint = Paint().apply { |
|
|
}
|
|
|
```
|
|
|
|
|
|
Nakoniec v aktivite pri klinutí vytvoríme inštanciu _CircleView_ a zavoláme nad hlavným layoutom metódu `addView`, ktorá zobrazí vytvorenú inštanciu _CircleView_.
|
|
|
Nakoniec v aktivite pri klinutí vytvoríme inštanciu _CircleView_ a zavoláme nad hlavným layoutom metódu `addView`, ktorá zobrazí vytvorenú inštanciu _CircleView_ (tá má nastavený kruh `circle`).
|
|
|
|
|
|
### 4. Náhodné farby kruhu
|
|
|
|
|
|
- Aplikácia bude zobrazovať namiesto súradníc dotyku počet bodiek.
|
|
|
- Aplikácia bude zobrazovať (namiesto súradníc dotyku) počet bodiek na obrazovke -- počítadlo sa zvýši pri každom kliknutí.
|
|
|
- Kruh bude náhodne meniť farby po kliknutí.
|
|
|
- alpha = čím menšia hodnota, tým priesvitnejšia farba
|
|
|
- **a**lpha = čím menšia hodnota, tým priesvitnejšia farba
|
|
|
- rgb = **r**ed, **g**reen, **b**lue
|
|
|
- `#000000`, `#FF0000`, `#00FF00`, `#0000FF`, `#00FFFF`, `#FFFFFF`, [`#FFFFAF`](https://www.google.com/search?q=%23FFFFAF)
|
|
|
- `nextInt(value)` vráti hodnutu [0..value)
|
... | ... | @@ -108,17 +108,17 @@ Nakoniec v aktivite pri klinutí vytvoríme inštanciu _CircleView_ a zavoláme |
|
|
paint.color = Color.argb(255, nextInt(250), nextInt(250), nextInt(250))
|
|
|
```
|
|
|
|
|
|
- Kruhy sa budú postupne zmenšovať.
|
|
|
- Napr. nový kruh bude vždy menší o 1/15 aktuálneho polomeru.
|
|
|
- Kruhy sa budú postupne zmenšovať, napr. nový kruh bude vždy menší o 1/20 aktuálneho polomeru.
|
|
|
|
|
|
## HW
|
|
|
|
|
|
- Zobrazte kruh na konkrétnej pozícii -- napr. [150, 150].
|
|
|
- Po kliknutí na kruh zmizne a objaví sa na (inej) náhodnej pozícii.
|
|
|
- V triede `Circle` vytvorte metódu `isIntersecting(x: Float, y: Float): Boolean`
|
|
|
- Použite metódu `nextInt(from, until)`
|
|
|
- Po kliknutí na kruh zmizne a objaví sa na (inej) náhodnej pozícii. Ak sa klikne mimo kruhu, tak sa nič nestane.
|
|
|
- V triede `Circle` vytvorte metódu `isIntersecting(x: Float, y: Float): Boolean`, ktorá zistí, či je `[x, y]` v kruhu alebo nie.
|
|
|
- Pre náhodnú pozíciu kruhu použite metódu `nextInt(from, until)`, pričom:
|
|
|
- from = priemer kruhu
|
|
|
- until = šírka/výška layoutu - priemer kruhu
|
|
|
- šírka/výška layoutu sa zistí cez `layout.width/height`
|
|
|
- Keď prenastavíte pozíciu kruhu, zavolajte nad `CircleView` metódu `invalidate()`, ktorá znovu prekreslí kruh.
|
|
|
- Kruh sa stále zmenšuje a mení farby.
|
|
|
- Appka teraz zobrazuje počítadlo "levelov", do ktorého sa hráč dostal. |