Dev/Android

Android (연습문제, kotlin 코드로만 화면 구현)

Walker_ 2024. 4. 22. 17:14

1. 연습문제

package kr.jeongmo.kotlin_code_layout

import android.annotation.SuppressLint
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.*
import java.util.*
import kotlin.collections.MutableList as MutableList

class MainActivity : AppCompatActivity() {

    lateinit var editText1 : EditText
    lateinit var editText2 : EditText
    lateinit var btnAdd : Button
    lateinit var btnSub : Button
    lateinit var btnMul : Button
    lateinit var btnDiv : Button
    lateinit var textResult : TextView

    lateinit var num1 : String
    lateinit var num2 : String
    var result: Int? = null

    // 숫자 버튼
    val btnNums = ArrayList<Button>()
    // 버튼의 id 값
    var btnIds = arrayOf(R.id.BtnNum0, R.id.BtnNum1, R.id.BtnNum2, R.id.BtnNum3,R.id.BtnNum4,
        R.id.BtnNum5,R.id.BtnNum6,R.id.BtnNum7, R.id.BtnNum8, R.id.BtnNum9)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        title = "테이블 레이아웃 계산기"

        editText1 = findViewById(R.id.Edit1)
        editText2 = findViewById(R.id.Edit2)

        btnAdd = findViewById(R.id.BtnAdd)
        btnSub = findViewById(R.id.BtnSub)
        btnMul = findViewById(R.id.BtnMul)
        btnDiv = findViewById(R.id.BtnDiv)

        textResult = findViewById(R.id.TextResult)

        btnAdd.setOnClickListener {
            num1 = editText1.text.toString()
            num2 = editText2.text.toString()
            result = num1.toInt() + num2.toInt()
            textResult.text = "계산결과 : $result"
        }
        btnSub.setOnClickListener {
            num1 = editText1.text.toString()
            num2 = editText2.text.toString()
            result = num1.toInt() - num2.toInt()
            textResult.text = "계산결과 : $result"
        }
        btnMul.setOnClickListener {
            num1 = editText1.text.toString()
            num2 = editText2.text.toString()
            result = num1.toInt() * num2.toInt()
            textResult.text = "계산결과 : $result"
        }
        btnDiv.setOnClickListener {
            num1 = editText1.text.toString()
            num2 = editText2.text.toString()
            result = num1.toInt() / num2.toInt()
            textResult.text = "계산결과 : $result"
        }

        for (i in btnIds.indices) {
            btnNums.add(i, findViewById(btnIds[i]))

            // 포커스가 되어있는 에디트 텍스트에 버튼의 숫자를 결합. 문자열 결합
            btnNums[i].setOnClickListener {
                if (editText1.isFocused) {
                    num1 = editText1.text.toString() + btnNums[i].text.toString()
                    editText1.setText(num1)
                } else if (editText2.isFocused) {
                    num2 = editText2.text.toString() + btnNums[i].text.toString()
                    editText2.setText(num2)
                }else {
                    Toast.makeText(applicationContext, "먼저 에디트텍스트를 선택하세요.", Toast.LENGTH_SHORT).show()
                }
            }
        }
    }
}

 

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow>
        <EditText
            android:id="@+id/Edit1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_margin="5dp"
            android:hint="숫자 1 입력"/>
    </TableRow>
    <TableRow>
        <EditText
            android:id="@+id/Edit2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_margin="5dp"
            android:hint="숫자 2 입력"/>
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/BtnNum0"
            android:text="0"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum1"
            android:text="1"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum2"
            android:text="2"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum3"
            android:text="3"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum4"
            android:text="4"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/BtnNum5"
            android:text="5"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum6"
            android:text="6"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum7"
            android:text="7"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum8"
            android:text="8"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/BtnNum9"
            android:text="9"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/BtnAdd"
            android:text="더하기"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/BtnSub"
            android:text="빼기"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/BtnMul"
            android:text="곱하기"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/BtnDiv"
            android:text="나누기"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
    </TableRow>
    <TableRow>
        <TextView
            android:id="@+id/TextResult"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:text="계산결과 :"
            android:textSize="20dp"
            android:textColor="#FF0000"
            />
    </TableRow>
</TableLayout>

 

 

 

2. kotlin 코드로만 작업

package kr.jeongmo.only_kotlin_code_0422

import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_main)

        val params = LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT
        )
        val baseLayout = LinearLayout(this)
        baseLayout.orientation = LinearLayout.VERTICAL
        setContentView(baseLayout, params)

        val editText01 = EditText(this)
        editText01.hint = "여기에 입력하세요"
        baseLayout.addView(editText01)

        val btn = Button(this)
        btn.text = "버튼입니다"
        btn.setBackgroundColor(Color.YELLOW)
        baseLayout.addView(btn)

        val text01 = TextView(this)
        text01.text = "텍스트뷰입니다."
        text01.setTextColor(Color.MAGENTA)
        baseLayout.addView(text01)

        btn.setOnClickListener {
            text01.text= editText01.text
        }
    }
}

 


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

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

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