이제 진짜 안드로이드 앱을 만들어 볼까요?

먼저, 1번에서와 같이 새 프로젝트를 만듭니다. 프로젝트 이름은 HelloWorld로 해볼까요?

Untitled

그러면, 아래와 같은 MainActivity.kt 코드를 확인할 수 있습니다.

package com.example.helloworld

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.helloworld.ui.theme.HelloWorldTheme

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            HelloWorldTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Greeting(
                        name = "Android",
                        modifier = Modifier.padding(innerPadding)
                    )
                }
            }
        }
    }
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    Text(
        text = "Hello $name!",
        modifier = modifier
    )
}

@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
    HelloWorldTheme {
        Greeting("Android")
    }
}

안드로이드 앱은 액티비티라는 단위로 이루어집니다. 액티비티는 독립적인 모듈이며, 지금으로써는 하나의 화면을 나타내는 단위라고 생각하면 됩니다. 다시 말해서, 우리가 지금 만든 앱은 유일하게 존재하는 MainActivity를 화면에 보여준다는 이야기입니다. 이 앱 뿐만이 아니라 거의 모든 안드로이드 앱은 맨 처음 MainActivity를 화면에 표시합니다.

MainActivity는 몇 가지 일을 합니다.

super.onCreate(savedInstanceState)

먼저, MainActivity는 ComponentActivity를 상속받은 클래스이므로, 원래 있는 ComponentActivity의 onCreate를 호출해야 정상적으로 작동할 것입니다.

enableEdgeToEdge()

다음으로, enableEdgeToEdge라는 함수를 실행시킵니다. 이것은 앱이 휴대전화 상단바와 네비게이션 바에 내용을 그릴 수 있게 합니다.

Untitled

enableEdgeToEdge 호출 시

Untitled

enableEdgeToEdge 호출 안할시

setContent {
	HelloWorldTheme {
		Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
			Greeting(
				name = "Android",
				modifier = Modifier.padding(innerPadding)
      )
	  }
	}
}