package com.example.kliker_xml import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.os.Bundle import android.widget.ImageView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat class MainActivity : AppCompatActivity() { private lateinit var bitmap: Bitmap private lateinit var canvas: Canvas private lateinit var paint: Paint override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } // metoda statyczna, która tworzy nową instancję obiektu Bitmap. // parametry: // szerokość i wysokość bitmapy // ARGB_8888 oznacza, że każdy piksel jest reprezentowany przez 4 składowe kolorów: // Alfa (A) - przezroczystość, Czerwony (R), Zielony (G), i Niebieski (B), // z każdym składnikiem zajmującym 8 bitów (czyli wartości od 0 do 255). bitmap = Bitmap.createBitmap(200, 300, Bitmap.Config.ARGB_8888) // tworzenie kanwy canvas = Canvas(bitmap) // referencja do imageView val imageView = findViewById<ImageView>(R.id.imageView) // Inicjalizacja farby paint = Paint().apply { isAntiAlias = true color = Color.RED // Domyślny kolor owalu } // Rysowanie owalu na kanwie drawOval() // Ustaw bitmapę w ImageView imageView.setImageBitmap(bitmap) // Obsługa kliknięcia na ImageView imageView.setOnClickListener { changeColor(imageView) // Zmiana koloru owalu } } private fun drawOval() { // Rysowanie owalu na kanwie canvas.drawColor(Color.TRANSPARENT) // Wyczyszczenie bitmapy przed rysowaniem canvas.drawOval(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat(), paint) } private fun changeColor(imageView: ImageView) { // Generowanie losowego koloru RGB val randomColor = Color.argb( 255, (0..255).random(), (0..255).random(), (0..255).random() ) paint.color = randomColor // Ustawienie nowego koloru drawOval() // Ponowne rysowanie owalu z nowym kolorem imageView.setImageBitmap(bitmap) // Ustawienie zaktualizowanej bitmapy } }