コンテンツにスキップ

カウントアプリの見た目を作ろう

Jetpack Composeをうまく活用して、見た目を作っていきましょう。

勉強会で使用するサンプルアプリのリポジトリ

Section titled “勉強会で使用するサンプルアプリのリポジトリ”

今回のサンプルコードは以下のリポジトリから確認できます。もし追いつけなかったときに確認してみてください。

GitHub リポジトリ: https://github.com/harutiro/CountAppSysHack

これから作成するカウントアプリでは、以下の機能を実装します。

  • カウントを表示するテキスト
  • カウントを増やすボタン

シンプルな構成ですが、Androidアプリ開発の基本的な要素を学ぶことができます。

現状の状態確認

先ほど、プロジェクトが作成できて、以下のような画面が表示されているか確認をしてください。できていない場合はプロジェクトの新規作成をしてください。

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関数を用いてカウントアプリを表示する部分を作ろう”
CountAppScreen関数の追加

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)
)
}
}
}
}
}
@Composable
fun CountAppScreen(modifier: Modifier = Modifier) {
}
コンポーネントを配置

CountAppScreenの中身を作ろう。Textコンポーネントと、Buttonコンポーネントを配置します。

@Composable
fun CountAppScreen(modifier: Modifier = Modifier) {
Text(
text = "カウント: 0",
textAlign = TextAlign.Center
)
Button(
onClick = {
// ここに値を追加する処理を書く
}
) {
Text(
"+",
)
}
}
実際に動かしてみる 実際に動かしてみる

Android Studioの上部にある「Run ‘app’」ボタン(再生ボタン)をクリックします。

これで、エミュレータが立ち上がり、自動でコードがビルドされます。

変な位置に重なって表示される

Section titled “変な位置に重なって表示される”
変な位置に重なって表示される

実行してみると、テキストとボタンが重なって変な位置に表示されることがあります。

これには2つの原因があります:

  1. 隙間が一切ない - 原因:innerPaddingが設定されてない
  2. テキストとボタンが重なってる - 原因:コンポーネントが縦並びになっていない

次のセクションでこれらの問題を解決していきます。

修正を入れてみよう

CountAppScreenColumnで囲み、modifierを追加します。

@Composable
fun CountAppScreen(modifier: Modifier = Modifier) {
Column(
modifier = modifier
) {
Text(
text = "カウント: 0",
textAlign = TextAlign.Center
)
Button(
onClick = {
// ここに値を追加する処理を書く
}
) {
Text(
"+",
)
}
}
}

このように表示されましたか?

Section titled “このように表示されましたか?”
修正後の表示結果

修正が完了すると、カウントのテキストと+ボタンが縦に並んで、正しい位置に表示されるようになります。

最後まで読み終えました! えらい!