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独特の記法で任せるという書き方。



