初めに
今回は、jetpack compose
の公式からでた1.4.0-alpha01
から使えるswipeRefresh
を実装していこうと思います
本文
実装自体はすごく単純でawipeRefresh
をつけたいBox
などに下記の設定を追加するだけです
val pullRefreshState =
rememberPullRefreshState(refreshing = isRefreshing, onRefresh = { onRefreshed() })
Box(
modifier = Modifier
.pullRefresh(pullRefreshState)
.fillMaxSize()
) {
}
PullRefreshIndicator(
refreshing = isRefreshing,
state = pullRefreshState,
modifier = Modifier.align(Alignment.TopCenter),
scale = true
)
pullRefreshState
には専用の型を代入します。remember
とついてるようにrefreshing
に渡されたBoolean
の状態が変更されるのを監視してくれてその状態によって挙動を制御することができます。
onRefresh
にはswipeされた時に実行して欲しい処理を代入します。
また、PullRefreshIndiacator
はswipeされた時に表示されるインジケータでrefreshing
にはpullRefreshState
同様Boolean
を入れることでその値を参照して表示、非表示をきりかえてくれます。
state
には対象のBox
と同じrememberPullRefreshState
型の変数を代入すれば大丈夫です。
一番重要なのはscale
でこれをtrue
にしないとデフォルトのfalse
の状態だと、対象のViewの上に隠れてる状態なのでタブなどがある時に被って表示されてしまいます。
最後に
今回は、ComposeでのswipeRefreshを紹介しました
だんだんと公式から必要なパーツが実装されてきたので今後誰かのお役に立てれば光栄です