Compose Basic Codelab Unit 1 링크
Compose Camp Unit 1 Repository
우선 Compose 코드는 어떤 구성을 갖고 있을까요?
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
GreetingCardTheme {
Surface(color = MaterialTheme.colors.background) {
Greeting("Android")
}
}
}
}
}
@Composable
fun Greeting(name: String) {
Surface(color = Color.Magenta) {
Text(text = "Hello $name!")
}
}
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
GreetingCardTheme {
Greeting("Meghan")
}
}
위의 코드를 Android Studio에서 작성하고, 우측 상단 Split을 누르면 Preview 화면을 동시에 볼 수 있습니다.
작성한 코드와 Preview 화면은 다음과 같아요!
DrawTextField()
TextFieldWithLink
Bright()
Outside()
RoundIcon()
@Composable
주석을 추가한다.@Preview
로 미리보기가 가능하다.@Preview
@Composable
fun DefaultPreview() {
GreetingCardTheme {
Greeting("Meghan")
}
}
@Preview(showBackground = true) // 배경화면 미리보기
@Preview(
name = "My Preview", // Preview에 제목 지정
showSystemUi = true // 시스템UI (휴대전화 화면)을 포함한 미리보기
)
Text(
text = message, // 표시할 메시지
fontSize = 36.sp, // 글씨 크기
fontWeight = FontWeight.Bold,
modifier = Modifier
.fillMaxWidth()
.wrapContentWidth(Alignment.CenterHorizontally)
.padding(start = 16.dp, top = 16.dp)
)
Image(
painter = painterResource(id = R.drawable.androidparty),
contentDescription = null, // (접근성 관련) 컨텐츠에 대한 설명
modifier = Modifier
.fillMaxHeight()
.fillMaxWidth(),
contentScale = ContentScale.Crop // 이미지 scale type
)
다양한 이미지 scale type 종류들을 사진으로 잘 정리해둔 링크를 발견해서 함께 첨부합니다! (여기~)
modifier = Modifier
// 높이 및 너비 관련
.width(100.dp)
.height(100.dp)
.fillMaxWidth(1f) // 전체 대비 채우는 비율 (1f가 기본)
.fillMaxHeight()
.fillMaxSize()
// 여유 공간
.padding(15.dp) // 상하좌우 15dp 여백
// start,end,top,bottom 이나 horizontal, vertical 값을 줄 수 있음
// margin을 주는 방법 -> 항목들 사이에 Spacer 추가하기
// 배경 및 모양
.background(
color = Color.Blue, // 배경색
shape = RoundedCornerShape(12.dp) // 모양
)
위 코드의 참고 출처 및 그 외의 다양한 Modifier 활용을 보고자 한다면 -> 링크로 !
Text( /* ... */ )
Spacer(Modifier.size(padding))
Row() { /* ... */ }
LinearLayout(orientation = vertical)
Row {
Text("First")
Text("Second")
}
LinearLayout(orientation = horizontal)
Column(
modifier = Modifier
) {
Text("First")
Text("Second")
}