MainActivity.kt は「アプリの起動エントリポイント(=最初に表示される画面)」を定義する場所
UI(画面の中身)はComposable関数として別ファイルに分けて定義 するのが一般的
package com.example.zeus import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { AnimatedBoxDemo() } } } @Composable fun AnimatedBoxDemo() { var expanded by remember { mutableStateOf(false) } val boxSize by animateDpAsState( targetValue = if (expanded) 200.dp else 100.dp, label = "box animation" ) Column( modifier = Modifier .fillMaxSize() .padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Box( modifier = Modifier .size(boxSize) .background(Color(0xFF4CAF50)) ) Spacer(modifier = Modifier.height(24.dp)) Button(onClick = { expanded = !expanded }) { Text(if (expanded) "縮小" else "拡大") } } }
byはプロパティデリゲーション(Property Delegation)というkotlin独特の記法で任せるという書き方。