月: 2024年6月

android:adjustViewBounds=”true”をImageコンポーズで実装する

https://stackoverflow.com/a/60651336

import androidx.annotation.DrawableRes
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource

@Composable
fun Modifier.adjustViewBounds(@DrawableRes id: Int): Modifier {
    val painter = painterResource(id)
    return this then Modifier.aspectRatio(painter.intrinsicSize.width / painter.intrinsicSize.height)
}

ImageコンポーズのModifierに設定すればOK。

Image(
    modifier = Modifier.adjustViewBounds(R.drawable.xxxx),
    painter = painterResource(R.drawable.xxxx),
    contentDescription = "description"
)

拡張関数便利


Composeをクリックしたときの波紋効果(リップルエフェクト)を消す

import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier

@Composable
fun Modifier.noRippleClickable(onClick: () -> Unit): Modifier =
    this then Modifier.clickable(
        interactionSource = remember { MutableInteractionSource() },
        indication = null,
        onClick = onClick
    )

使う時はModifierに設定すれば良いだけです。


[Android] ViewModelの書き方

Androidアプリを作る上でViewModelをどれだけうまく書くかがアプリを長く運営していく上で大事になってきます。

昔書いた記事はこちら

ViewModelがAndroidアプリの生命線であり、設計良く保ち、テストコードを書くことでバグを少なく、変更にも対応しやすく変更失敗率も減少し、生産性の向上に繋がります。逆にViewModelが良くないとテストコードも書けず、変更にも対応しにくく変更失敗率が増加し、生産性は下降します。

ViewModelを実装する上でどのように書いたら良いか、海外の記事でうまくまとめられているので1個ずつルールに従っていくと良いViewModelが書けます。2024年6月時点でpart3まであります。

https://proandroiddev.com/mastering-android-viewmodels-essential-dos-and-donts-part-1-%EF%B8%8F-bdf05287bca9

https://proandroiddev.com/mastering-android-viewmodels-essential-dos-and-donts-part-2-%EF%B8%8F-2b49281f0029

https://proandroiddev.com/mastering-android-viewmodels-essential-dos-and-donts-part-3-%EF%B8%8F3%EF%B8%8F%E2%83%A3-1833ce3ddd2b

技術書典16ではmhidakaさんがViewModelの書き方の本を出しているのでこちらもおすすめです。

https://techbooster.booth.pm/items/5748877

内容が少し古いですが釘宮さんの下記の書籍も設計の全体像を把握しやすいのでおすすめです。

https://peaks.cc/books/architecture_with_team