Jetpack Compose

【Android】Jetpack Compose 入門講座 第9回「画像とテキスト ②画像の表示」

Sara

はじめに

前回は画像と関数を用意しました。

まずは AnimalListElement 関数に画像を追加していきましょう。

>> ここまでの記事はこちら

画像の表示

Image 関数の追加

画像の表示には Image 関数を使用します。

AnimalListElement 関数に Image 関数を追加すると、3行目のように painter と contentDescription パラメータ付きのコードが追加されます。

1@Composable
2fun AnimalListElement(modifier: Modifier = Modifier) {
3    Image(painter = , contentDescription = )
4}

この2つのパラメータは必ず書く必要があるので、それぞれにコードを追加しましょう。

1@Composable
2fun AnimalListElement(modifier: Modifier = Modifier) {
3    Image(
4        painter = painterResource(id = R.drawable.dog),
5        contentDescription = "Dog"
6    )
7}

プレビュー画面に画像が表示されました。

プレビューが更新されない場合は右上の をクリックしてください。

painter パラメータ

表示する画像ファイルを指定します。

前回、画像ファイル dog.jpg を res/drawable フォルダに置きました。

res フォルダに置いた全てのファイルは R クラスという場所で Int 型の数値(ID)に変換されて管理されています。

ですので R.drawable.dog と書くことで画像ファイルを指定することができます。

contentDescription パラメータ

画像の説明文を指定します。

目が不自由な方などが使用する読み上げ機能を有効にしている場合、ここに指定した文字列が読み上げられる仕組みです。

特に意味のない装飾目的の画像である場合は contentDescription = null とします。

画像のサイズ

画像サイズは modifier パラメータを使います。

1@Composable
2fun AnimalListElement(modifier: Modifier = Modifier) {
3    Image(
4        painter = painterResource(id = R.drawable.dog),
5        contentDescription = "Dog",
6        modifier = modifier.size(80.dp)
7    )
8}

プレビュー画面はこのようになりました。

犬の画像は横長ですが、Image コンポーザブルは縦横 80 dp の正方形にしたので上下に余白がついています。

画像がピッタリと表示されるように調整していきましょう。

アスペクト比の調整

画像の縦横の比率を決めるアスペクト比を指定します。

使うのは contentScale パラメータです。6行目を追加します。

1@Composable
2fun AnimalListElement(modifier: Modifier = Modifier) {
3    Image(
4        painter = painterResource(id = R.drawable.dog),
5        contentDescription = "Dog",
6        contentScale = ContentScale.Crop,
7        modifier = modifier.size(80.dp)
8    )
9}

ここでは ContentScale.Crop にしたので、指定したサイズぴったりに画像が切り抜かれて中心に表示されます。

他にも以下の値を指定できます。

ContentScale.Fit比率を維持して画像を表示。デフォルト。
ContentScale.Crop指定したサイズにピッタリになるように画像が切り抜かれる。
ContentScale.FillBounds比率を保たずに指定したサイズに合わせて画像を調整。
ContentScale.FillHeight指定された高さを合わせて、比率を保ったまま幅を決める。
ContentScale.FillWidth指定された幅を合わせて、比率を保ったまま高さを決める。
ContentScale.Inside比率を維持したまま画像を表示。
ContentScale.None画像の拡大・縮小をしないでそのまま表示。

角を丸める

仕上げに画像の円形にしてみましょう。

7行目の最後にコードを追加します。

1@Composable
2fun AnimalListElement(modifier: Modifier = Modifier) {
3    Image(
4        painter = painterResource(id = R.drawable.dog),
5        contentDescription = "Dog",
6        contentScale = ContentScale.Crop,
7        modifier = modifier.size(80.dp).clip(CircleShape)
8    )
9}

画像が丸くなりました。

角を少しだけ丸めたい場合は RoundCornerShape(サイズ.dp) と書くことができます。

modifier = modifier.size(80.dp).clip(RoundedCornerShape(16.dp))

次に行うこと

次は画像の下にテキストを表示してみましょう。

第10回「画像の表示 ③テキストの追加」に進む

講座の最新情報はこちら

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
ABOUT ME
Sara
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

Code for Fun プログラミング講座では、プログラミングの基礎からアプリ開発まで学ぶことができます。

わかりやすく・シンプルをモットーに

  • 同じコードを書けば必ず完成できること
  • 専門用語を使いすぎないこと

を重視しています。

POINT 01

動くコード

プログラミングの文法だけを学んでも、そこから動くアプリを開発をするのは難しいです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなど「アプリとして機能するもの」を作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

分からないことがあっても、前のレッスンに戻ることができるので安心です。

お申し込みしたその日からからすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました