๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Android Studio

[Android ์•ฑ๊ฐœ๋ฐœ ์ž…๋ฌธ] ํ”„๋กœ์ ํŠธ ์‹ค์Šต (# ์ถ”๊ฐ€ํ•˜๊ธฐ)

by ์ ผ์ ผ39 2024. 3. 18.

1. activity ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒ•

: manifest์—์„œ name ๋ถ€๋ถ„ ์šฐํด๋ฆญํ•˜๊ณ  refactor > rename

 

2. ๋ฆฌ์†Œ์Šค ํŒŒ์ผ ์žฌ์ •์˜

1) ์•ฑ ์ด๋ฆ„ ๋ณ€๊ฒฝ : My Android App ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝํ•˜๊ธฐ (res>values>strings)

<resources>
    <string name="app_name">My Android App</string>
</resources>

2) ์•ฑ ์‹คํ–‰ ํ™”๋ฉด์—์„œ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ• 1

    : res/layout/start_activity_view.xml์— ๊ธฐ์ˆ ๋œ TextView ์œ„์ ฏ์˜ android:text ์†์„ฑ ๊ฐ’์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๊ธฐ

    (-) ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ํ•œ๊ตญ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋‹ค๊ตญ์–ด ์ง€์›์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€...
        -> resource ํŒŒ์ผ์—์„œ ํ•œ๊ธ€์€ _kr๋กœ ๋งŒ๋“ค๊ณ , string ํŒŒ์ผ์„ ๋˜ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ๊ฐ๊ฐ ๋‹ด๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ (@ ์˜ˆ์‹œ ์ฐพ๊ธฐ)

    <TextView
//        android:layout_width="wrap_content"
//        android:layout_height="wrap_content"
        android:text="Hello World!"

3) ์•ฑ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ• 2

    : res/values/strings.xml ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค ์ •์˜ํ•˜๊ณ ,
        ๊ทธ ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค๋ฅผ res/layout/start_activity_view.xml์— ๊ธฐ์ˆ ๋œ TextView ์œ„์ ฏ์˜ android:text ์†์„ฑ ๊ฐ’์œผ๋กœ ์ง€์ •

<resources>
    ...
    <string name="app_content_text">์•ˆ๋“œ๋กœ์ด๋“œ ์ˆ˜๊ฐ•์ƒ ์—ฌ๋Ÿฌ๋ถ„ ์•ˆ๋…•ํ•˜์„ธ์š”?</string>
</resources>
    <TextView
//        android:layout_width="wrap_content"
//        android:layout_height="wrap_content"
        android:text="@string/app_content_text"

 

 

3. ์ฃผ์‚ฌ์œ„ ์•ฑ ๋งŒ๋“ค๊ธฐ

package com.example.lab3_dice

import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import kotlin.random.Random

class MainActivity : AppCompatActivity() {
    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
        }

        val tv_num = findViewById<TextView>(R.id.tv_number)
        //findViewById : Roll the Dice ๋ฅผ id๋ฅผ ๊ฐ€์ง€๊ณ  ์ฐพ๊ฒ ๋‹ค๋Š” ๋œป
        //<> ์† : ์–ด๋–ค ๊ฒƒ์„ ๊ฐ€์ ธ์˜ฌ๊ฑด์ง€. ํƒ€์ž…
        //() ์† : ๋ฆฌ์†Œ์Šค ์ด๋ฆ„

        val btn_dice = findViewById<Button>(R.id.btn_roll)

        btn_dice.setOnClickListener {
            //๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๋–„๋ฅผ ํ‘œํ˜„
            val random = Random
            val num  = random.nextInt(6) + 1
            //6๊นŒ์ง€์ธ๋ฐ ์‹œ์ž‘ ๊ฐ’์ด 1์ž„

            //textview์— ํ‘œ์‹œ
            tv_num.text = num.toString()
            //int๋กœ ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋„ฃ๊ธฐ ์ „์— string์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ
            //textview์— text ์“ธ ๋•Œ๋Š” .text ํ•˜๋ฉด ๋จ

            Log.d("MainActivity", "num = ${num.toString()}")
            //logcat ๋ˆ„๋ฅด๊ณ  roll ์—ฌ๋Ÿฌ ๋ฒˆ ๋ˆ„๋ฅธ ๋’ค ์•„๋ž˜ ํ™”์‚ดํ‘œ ๋ˆ„๋ฅด๋ฉด ๋‚ด๋ ค๊ฐ

        }
    }
}