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"))
}
}
}
}