カウントアプリの見た目を作ろう
Jetpack Composeをうまく活用して、見た目を作っていきましょう。
勉強会で使用するサンプルアプリのリポジトリ
Section titled “勉強会で使用するサンプルアプリのリポジトリ”今回のサンプルコードは以下のリポジトリから確認できます。もし追いつけなかったときに確認してみてください。
GitHub リポジトリ: https://github.com/harutiro/CountAppSysHack ↗
カウントアプリの機能
Section titled “カウントアプリの機能”これから作成するカウントアプリでは、以下の機能を実装します。
- カウントを表示するテキスト
- カウントを増やすボタン
シンプルな構成ですが、Androidアプリ開発の基本的な要素を学ぶことができます。
現状の状態確認
Section titled “現状の状態確認”
先ほど、プロジェクトが作成できて、以下のような画面が表示されているか確認をしてください。できていない場合はプロジェクトの新規作成をしてください。
Android Studioで MainActivity.kt を開くと、以下のようなコードが表示されています。
package io.github.harutiro.countapp
import ...
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { CountAppTheme { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> Greeting( name = "Android", modifier = Modifier.padding(innerPadding) ) } } } }}コードのいらないところを消そう
Section titled “コードのいらないところを消そう”デフォルトで書かれたコードがあるので、使わないため、ここまで綺麗にしておきましょう。
package io.github.harutiro.countapp
import ...
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { CountAppTheme { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
} } } }}Composable関数を用いてカウントアプリを表示する部分を作ろう
Section titled “Composable関数を用いてカウントアプリを表示する部分を作ろう”
MainActivityクラスの中のScaffold内にCountAppScreenを追加し、クラスの外にCountAppScreen関数を定義します。
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { CountAppTheme { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> CountAppScreen( modifier = Modifier .fillMaxSize() .padding(innerPadding) ) } } } }}
@Composablefun CountAppScreen(modifier: Modifier = Modifier) {
}コンポーネントを配置しよう
Section titled “コンポーネントを配置しよう”
CountAppScreenの中身を作ろう。Textコンポーネントと、Buttonコンポーネントを配置します。
@Composablefun CountAppScreen(modifier: Modifier = Modifier) { Text( text = "カウント: 0", textAlign = TextAlign.Center )
Button( onClick = { // ここに値を追加する処理を書く } ) { Text( "+", ) }}実際に動かしてみる
Section titled “実際に動かしてみる”
Android Studioの上部にある「Run ‘app’」ボタン(再生ボタン)をクリックします。
これで、エミュレータが立ち上がり、自動でコードがビルドされます。
変な位置に重なって表示される
Section titled “変な位置に重なって表示される”
実行してみると、テキストとボタンが重なって変な位置に表示されることがあります。
これには2つの原因があります:
- 隙間が一切ない - 原因:
innerPaddingが設定されてない - テキストとボタンが重なってる - 原因:コンポーネントが縦並びになっていない
次のセクションでこれらの問題を解決していきます。
修正を入れてみよう
Section titled “修正を入れてみよう”
CountAppScreenをColumnで囲み、modifierを追加します。
@Composablefun CountAppScreen(modifier: Modifier = Modifier) { Column( modifier = modifier ) { Text( text = "カウント: 0", textAlign = TextAlign.Center )
Button( onClick = { // ここに値を追加する処理を書く } ) { Text( "+", ) } }}このように表示されましたか?
Section titled “このように表示されましたか?”
修正が完了すると、カウントのテキストと+ボタンが縦に並んで、正しい位置に表示されるようになります。