Learn & Record

Android (계산기 완료, 연습문제 (사항 추가), 작업 순서, 컴파운드 버튼, 체크박스, 스위치, 토글 버튼, 라디오 버튼, 라디오 그룹) 본문

Dev/Android

Android (계산기 완료, 연습문제 (사항 추가), 작업 순서, 컴파운드 버튼, 체크박스, 스위치, 토글 버튼, 라디오 버튼, 라디오 그룹)

Walker_ 2024. 4. 17. 17:05

1. 계산기 완료

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>

 

 

 


공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.

부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.

읽어주셔서 감사합니다 :)