<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textViewRandom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/spartaTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/clickButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Click"
app:layout_constraintEnd_toEndOf="@+id/spartaTextView"
app:layout_constraintStart_toStartOf="@+id/spartaTextView"
app:layout_constraintTop_toBottomOf="@+id/spartaTextView" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.practice
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.example.practice.R
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlin.random.Random
class MainActivity : AppCompatActivity() {
private var job: Job? = null
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
}
setupButton()
setRandomValueBetweenOneToHundred()
setJobAndLaunch()
}
private fun setupButton() {
val button = findViewById<Button>(R.id.clickButton)
button.setOnClickListener {
job?.cancel()
checkAnswerAndShowToast()
}
}
private fun setRandomValueBetweenOneToHundred() {
val randomTextView = findViewById<TextView>(R.id.textViewRandom)
val random = Random
val randomValue = random.nextInt(101)
randomTextView.text = randomValue.toString()
}
private fun setJobAndLaunch() {
val textView = findViewById<TextView>(R.id.spartaTextView)
job = lifecycleScope.launch {
for (i in 1 .. 100) {
if (isActive) {
textView.text = i.toString()
delay(500)
}
}
}
}
private fun checkAnswerAndShowToast() {
val textView = findViewById<TextView>(R.id.spartaTextView)
val randomTextView = findViewById<TextView>(R.id.textViewRandom)
if (textView.text == randomTextView.text) { // view끼리 당연히 비교할 수가 d없지 이거는 text
Toast.makeText(this, "같습니다", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "다릅니다", Toast.LENGTH_SHORT).show()
}
}
}
728x90