package com.example.galeria_xml import android.graphics.Color import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.widget.Button import android.widget.EditText import android.widget.ImageView import android.widget.LinearLayout import android.widget.Switch import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat class MainActivity : AppCompatActivity() { private var currentImageIndex = 0 // Indeks bieżącego obrazka private val images = arrayOf(R.drawable.kwiatek1, R.drawable.kwiatek2, R.drawable.kwiatek3, R.drawable.kwiatek4) // Tablica obrazków 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 } // można to pominąć właczając View Binding w pliku build.gradle! // kiedy View Binding jest włączone, Android automatycznie generuje klasę związane z layoutem val btnPrev: Button = findViewById(R.id.button) val btnNext: Button = findViewById(R.id.button2) val imgView: ImageView = findViewById(R.id.imageView) val edText: EditText = findViewById(R.id.editTextText) val switchBg: Switch = findViewById(R.id.switch1) val lineLayoutMain: LinearLayout = findViewById(R.id.main) // zmiana koloru tła (tylko tak działa) btnNext.setBackgroundColor(Color.parseColor("#FF004C40")) btnPrev.setBackgroundColor(Color.parseColor("#FF004C40")) // przycisk wprzód btnPrev.setOnClickListener { //println("Przycisk prev został kliknięty!") currentImageIndex = (currentImageIndex - 1) if(currentImageIndex < 0){ currentImageIndex = 3 } imgView.setImageResource(images[currentImageIndex]) // Ustaw nowy obrazek } // przycisk w tył btnNext.setOnClickListener { //println("Przycisk next został kliknięty!") // Zwiększ indeks i zrób cykl currentImageIndex = (currentImageIndex + 1) % images.size imgView.setImageResource(images[currentImageIndex]) // Ustaw nowy obrazek } // TextWatcher to interface z trzema metodam. które należy zaimplementować: // # beforeTextChanged // # afterTextChanged // # onTextChanged // https://developer.android.com/reference/android/text/TextWatcher.html // Dodajemy TextWatcher do EditText edText.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { // Nie robimy nic //TODO("Not yet implemented") } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { // Sprawdzamy, czy wprowadzone dane są liczbą val input = s.toString() if (input.isNotEmpty()) { val index = input.toInt() - 1 // Przesunięcie o 1 dla indeksu tablicy if (index in images.indices) { // sprawdzenie czy podana liczba jest w zakresie tablicy imgView.setImageResource(images[index]) // zmiana zdjęcia currentImageIndex = index } } } override fun afterTextChanged(s: Editable?) { //TODO("Not yet implemented") } }) // Ustawienie nasłuchiwania na zmiany stanu przełącznika // podkreślenie ignoruje pierwszy parametr - referencja do switcha switchBg.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { // Zmieniamy tło na niebieskie, gdy przełącznik jest włączony lineLayoutMain.setBackgroundColor(Color.parseColor("#FF1565C0")) } else { // Zmieniamy tło na zielone, gdy przełącznik jest wyłączony lineLayoutMain.setBackgroundColor(Color.parseColor("#00796B")) } } } }