:appモジュールにホーム画面を作成します。
:appモジュールに:core:resourcesモジュールへの依存関係を追記します。
: dependencies { : implementation(project(":core:resources")) : }
追記後、『Sync Now』で内容をプロジェクトに反映させます。
UI層として:appモジュールにpresentationディレクトリ(パッケージ)を作成し、直下にAppHomeScreen.ktを作成します。
package jp.co.progress_llc.portal.presentation import androidx.compose.runtime.Composable import androidx.compose.foundation.background import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.material3.* import jp.co.progress_llc.portal.R import jp.co.progress_llc.portal.core.ui.theme.AppTheme import jp.co.progress_llc.portal.core.resources.R as CoreR @Composable fun AppHomeScreen() { Scaffold( ) { innerPadding -> Column( modifier = Modifier .padding(innerPadding) .fillMaxSize() .background(MaterialTheme.colorScheme.background) .padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Top ) { Spacer(modifier = Modifier.height(48.dp)) Image( painter = painterResource(id = R.drawable.ic_logo), contentDescription = "ロゴ", modifier = Modifier .size(120.dp) .padding(bottom = 16.dp) ) Text( text = stringResource(CoreR.string.company_name) + "\n" + stringResource(CoreR.string.app_name), style = MaterialTheme.typography.headlineMedium, fontWeight = FontWeight.Bold, textAlign = TextAlign.Center, modifier = Modifier.padding(bottom = 32.dp) ) Column( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, modifier = Modifier.padding(16.dp) ) { IconButton( onClick = { }, modifier = Modifier.size(80.dp) ) { Image( painter = painterResource(id = R.drawable.ic_button_train), contentDescription = "発車予定ボタン", modifier = Modifier.size(64.dp) ) } Text( text = "発車予定", style = MaterialTheme.typography.bodyLarge, fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.onSurface, modifier = Modifier.padding(top = 0.dp) ) } } } } @Preview(showBackground = true) @Composable fun AppHomeScreenPreview() { AppTheme { AppHomeScreen() } }
アプリケーションタイトルとアイコンボタンだけの画面なので、ViewModelは不要です。