LoginSignup
33
27

JetpackComposeのPreviewで知っておくといいことがあるかもしれないTips

Last updated at Posted at 2024-05-11

はじめに

2023年3月からAndroidアプリエンジニアをしている KSND(GitHubX )といいます。

最近LTしてみたいな〜と漠然に思っていて、PreviewについてLTしたら面白いのではと考えちょっとだけPreviewについて調べましたが大して話せそうなことがなかったのでLTを断念しました。
すぐに忘れてしまいそうだったので思い出せるようにこの記事を書きました。

今後、Preview関連でTipsを知ったらこの記事に追記しようと思ってます。

Previewでダミーのテキストを使いたい時

Composeのライブラリ(androidx.compose.ui:ui-tooling-preview)で用意されているLoremIpsum(ロレムイプサム)というクラスを利用すれば自前でダミーテキストを用意しなくても良くなります。

  • Android developers - LoremIpsum

  • IssueTracker - LoremIpsum preview parameter customization


/**
 * 20単語のテキストを提供する[LoremIpsum]のサブクラス (デフォルトは500単語)
 */
class LoremIpsum20Words : LoremIpsum(20)

@Preview
@Composable
fun PreviewSample1(
    @PreviewParameter(LoremIpsum20Words::class) text: String,
) {
    // PreviewParameterを使わない場合は以下のように使用できる
    // Text(text = LoremIpsum(20).values.first())
    Text(text = text)
}

image.png

手っ取り早くいろんな条件でPreviewを表示したいとき

こちらもComposeのライブラリ(androidx.compose.ui:ui-tooling-preview)で用意されているPreviewのアノテーションが既に用意されています。

いろんな端末での表示を見たい時 → PreviewScreenSizes アノテーション

@PreviewScreenSizes
@Composable
fun PreviewSample() {
    Sample()
}

image.png

ダークモード・ライトモードの表示を見たい時 → PreviewLightDark アノテーション

@PreviewLightDark
@Composable
fun PreviewSample() {
    Sample()
}

image.png

いろんなフォントサイズでの表示を見たい時 -> PreviewFontScale アノテーション

7つのfontScale(85%, 100%, 115%, 130%, 150%, 180%, 200%)が見れます

@PreviewFontScale
@Composable
fun PreviewSample() {
    Sample()
}

image.png

Previewで表示できないものはPreviewで表示させないようにする

Previewで使用するComposable関数の箇所でLocalInspectionModeを使用しPreviewかどうかを判定することができます

@Composable
fun EnablePreviewSample() {}

@Composable
fun UnablePreviewSample() {}

@Composable
fun Sample() {
    if (LocalInspectionMode.current) {
        // Preview時のみ表示される
        EnablePreviewSample()
    } else {
        // Preview時以外に表示される
        UnablePreviewSample()
    }
}

@Preview
@Composable
fun PreviewSample() {
    Sample()
}

Preview関数の名前をPreviewで表示したい

Thread.currentThread().getStackTrace()[2].methodNameのようにコードを記述すればPreview関数の名前を取得することができます。
2の部分は呼び出し元関数のインデックスの値になります。

@Preview
@Composable
fun PreviewSampleAAAAAAAA() {
    Text(text = Thread.currentThread().getStackTrace()[1].methodName)
}

image.png

Preview関数を利用してVRT(画像回帰テスト)をしたい

2つのライブラリ ShowkaseRoborazzi を利用すれば比較的容易にできます

image.png

以前、記事を書いたので興味ある方は見ていただけると嬉しいです。

Preview関数を作る効率を良くしたい

AndroidStudio で prevと書いて Enter を入力すると

image.png

以下のようなコードを生成してくれます

image.png

33
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
27