이제 진짜 안드로이드 앱을 만들어 볼까요?
먼저, 1번에서와 같이 새 프로젝트를 만듭니다. 프로젝트 이름은 HelloWorld로 해볼까요?
그러면, 아래와 같은 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라는 함수를 실행시킵니다. 이것은 앱이 휴대전화 상단바와 네비게이션 바에 내용을 그릴 수 있게 합니다.
enableEdgeToEdge 호출 시
enableEdgeToEdge 호출 안할시
setContent {
HelloWorldTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
)
}
}
}