Learn & Record
Android (계산기 완료, 연습문제 (사항 추가), 작업 순서, 컴파운드 버튼, 체크박스, 스위치, 토글 버튼, 라디오 버튼, 라디오 그룹) 본문
Dev/Android
Android (계산기 완료, 연습문제 (사항 추가), 작업 순서, 컴파운드 버튼, 체크박스, 스위치, 토글 버튼, 라디오 버튼, 라디오 그룹)
Walker_ 2024. 4. 17. 17:051. 계산기 완료
package kr.jeongmo.calculator
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
class MainActivity : AppCompatActivity() {
lateinit var editText01: EditText
lateinit var editText02: EditText
lateinit var btnAdd: Button
lateinit var btnSub: Button
lateinit var btnMul: Button
lateinit var btnDiv: Button
lateinit var textViewResult: TextView
lateinit var num1:String
lateinit var num2:String
var result: Int? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "초간단 계산기"
editText01 = findViewById(R.id.editText01)
editText02 = findViewById(R.id.editText02)
btnAdd = findViewById(R.id.btnAdd)
btnSub = findViewById(R.id.btnSub)
btnMul = findViewById(R.id.btnMul)
btnDiv = findViewById(R.id.btnDiv)
textViewResult = findViewById(R.id.textViewResult)
num1 = editText01.text.toString()
num2 = editText02.text.toString()
btnAdd.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
result = Integer.parseInt(num1) + Integer.parseInt(num2)
textViewResult.setText("계산 결과: ${result}")
}
btnSub.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
result = Integer.parseInt(num1) - Integer.parseInt(num2)
textViewResult.setText("계산 결과: ${result}")
}
btnMul.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
result = Integer.parseInt(num1) * Integer.parseInt(num2)
textViewResult.setText("계산 결과: ${result}")
}
btnDiv.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
result = Integer.parseInt(num1) / Integer.parseInt(num2)
textViewResult.setText("계산 결과: ${result}")
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText01"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="숫자1"/>
<EditText
android:id="@+id/editText02"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="숫자2"/>
<Button
android:id="@+id/btnAdd"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="더하기"/>
<Button
android:id="@+id/btnSub"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="빼기"/>
<Button
android:id="@+id/btnMul"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="곱하기"/>
<Button
android:id="@+id/btnDiv"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="나누기"/>
<TextView
android:id="@+id/textViewResult"
android:layout_width="wrap_content"
android:layout_margin="10dp"
android:layout_height="wrap_content"
android:text="계산결과:"
android:textSize="30dp"
android:textColor="@color/teal_700"/>
</LinearLayout>
2. 연습문제 (사항 추가)
<Button
android:id="@+id/btnNam"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="나머지"/>
package kr.jeongmo.calculator
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
class MainActivity : AppCompatActivity() {
lateinit var editText01: EditText
lateinit var editText02: EditText
lateinit var btnAdd: Button
lateinit var btnSub: Button
lateinit var btnMul: Button
lateinit var btnDiv: Button
lateinit var btnNam: Button
lateinit var textViewResult: TextView
lateinit var num1:String
lateinit var num2:String
var result: Double? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "Calculator"
editText01 = findViewById(R.id.editText01)
editText02 = findViewById(R.id.editText02)
btnAdd = findViewById(R.id.btnAdd)
btnSub = findViewById(R.id.btnSub)
btnMul = findViewById(R.id.btnMul)
btnDiv = findViewById(R.id.btnDiv)
btnNam = findViewById(R.id.btnNam)
textViewResult = findViewById(R.id.textViewResult)
btnAdd.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
if (num1 == "" || num2 == "") {
Toast.makeText(applicationContext, "값을 입력하셔야 됩니다.", Toast.LENGTH_SHORT).show()
} else {
result = (Integer.parseInt(num1)).toDouble() + (Integer.parseInt(num2)).toDouble()
textViewResult.setText("계산 결과: ${result}")
}
}
btnSub.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
if (num1 == "" || num2 == "") {
Toast.makeText(applicationContext, "값을 입력하셔야 됩니다.", Toast.LENGTH_SHORT).show()
} else {
result = (Integer.parseInt(num1)).toDouble() - (Integer.parseInt(num2)).toDouble()
textViewResult.setText("계산 결과: ${result}")
}
}
btnMul.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
if (num1 == "" || num2 == "") {
Toast.makeText(applicationContext, "값을 입력하셔야 됩니다.", Toast.LENGTH_SHORT).show()
} else {
result = (Integer.parseInt(num1)).toDouble() * (Integer.parseInt(num2)).toDouble()
textViewResult.setText("계산 결과: ${result}")
}
}
btnDiv.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
if (num1 == "" || num2 == "") {
Toast.makeText(applicationContext, "값을 입력하셔야 됩니다.", Toast.LENGTH_SHORT).show()
} else if(num1 == "0" || num2 == "0") {
Toast.makeText(applicationContext, "0으로 나눌 수 없습니다.", Toast.LENGTH_SHORT).show()
} else {
result = (Integer.parseInt(num1)).toDouble() / (Integer.parseInt(num2)).toDouble()
textViewResult.setText("계산 결과: ${result}")
}
}
btnNam.setOnClickListener {
num1 = editText01.text.toString()
num2 = editText02.text.toString()
if (num1 == "" || num2 == "") {
Toast.makeText(applicationContext, "값을 입력하셔야 됩니다.", Toast.LENGTH_SHORT).show()
} else {
result = (Integer.parseInt(num1)).toDouble() % (Integer.parseInt(num2)).toDouble()
textViewResult.setText("계산 결과: ${result}")
}
}
}
}
- 작업 순서
- 위젯 담을 변수 선언 > 변수에 R.id 값 지정 > 이벤트 리스너 생성
3. 컴파운드 버튼
- 버튼 클래스의 하위 클래스로 체크박스, 라디오, 스위치, 토글버튼의 상위 클래스
- 공통적으로 체크 또는 언체크 상태가 될 수 있음
4. 체크박스
- 클릭할 때 마다 상태가 체크, 언체크로 바뀜
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<CheckBox
android:id="@+id/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="안드로이드폰"
/>
<CheckBox
android:id="@+id/iphone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="아이폰"
/>
<CheckBox
android:id="@+id/window"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="윈도폰"
/>
</LinearLayout>
5. 스위치, 토글 버튼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"/>
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"/>
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"/>
</LinearLayout>
6. 라디오버튼과 라디오그룹
- 라디오버튼을 여러개 나열만 하면 선택이 중복이 됨
- 그래서 라디오 그룹과 함께 사용해야 됨
- 라디오그룹에서 가끔 사용되는 clearCheck() 메서드는, 그룹 안 모든 체크해제함
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/rGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="남성"/>
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="여성"/>
</RadioGroup>
</LinearLayout>
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)