1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

material3-window-size-classとmaterial3.adaptiveが依存するWindowManagerのWindowSizeClassの違い

Posted at

androidx.compose.material3:material3-window-size-classandroidx.compose.material3.adaptive:adaptive が依存する androidx.window:window にはどちらも WindowSizeClass があります。

共通点

どちらも WindowSizeClass という大画面対応におけるブレイクポイントに関する API になります。
どちらもブレイクポイントとなる値に差はなく同じものとなっています。

違い

WindowSizeClass の取得方法

material3-window-size-classActivity を必要とするのに対して、adaptive 経由の window の場合は関数を呼ぶだけになります。

// material3-window-size-class
val windowSizeClass = calculateWindowSizeClass(activity)

// adaptive経由のwindow
val adaptiveInfo = currentWindowAdaptiveInfo()
val windowSizeClass = adaptiveInfo.windowSizeClass

扱う情報

material3-window-size-class の場合は WindowSizeClass しか持っていないため、Width/Height の Compact/Medium/Expanded のみ判定が可能になっています。

一方の window の場合は WindowSizeClass だけでなく Foldable のヒンジの情報も持っています。また、window の 1.5.0 以上では WindowWidthSizeClass に Large/Extra-large の判定も可能になっています。

どちらを使うべきか

扱いやすさや扱う情報の多さ的には androidx.compose.material3.adaptive:adaptiveandroidx.window:window の方が優先されるように思います。
また、androidx.window:windowWindowWidthSizeClass に Large/Extra-large が対応される予定がある一方で、androidx.compose.material3:material3-window-size-class には動きがないので将来的にどちらかだけがメンテナンスされる可能性もありそうです。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?