Upgrade to Pro — share decks privately, control downloads, hide ads and more …

screenWidthDpちょっと 怖いかも、、??

takarabe-hamuyatti
December 02, 2023
270

screenWidthDpちょっと 怖いかも、、??

dpとかpxに関する話です。

takarabe-hamuyatti

December 02, 2023
Tweet

Transcript

  1. 目次 • 自己紹介 • 結論 • 基礎知識 • screenWidthDpについて •

    何が落とし穴? • screenWidthDpをもとにpxを作ると? • 改めて結論
  2. 基礎知識 px → デジタル画像の最小単位。 dpi(dot per inch) → 1インチあたりのドット数。画面密度 dp(density-independent

    pixels) → 密度非依存ピクセル。dpが端末の画面密度に応じてpxに変換され、ユーザーの目に 届く。
  3. 何が落とし穴? Floatではなく、Intで保存されていること (BoxWithConstraintsScope.maxWidthはFloat) DPを求める式は 画面幅(px) * 160 / dpi →

    割り切れなさそうじゃない、、?? 計算式 https://developer.android.com/training/multiscreen/screendensities?hl=ja#dips-pels screenWidthDpの実際のコード https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/content/res/Configurat
  4. 何が落とし穴? 実際、Pixel6では 横幅 → 1080px dpi → 420 1080 *

    160 / 420 = 411.4285 → ScreenWidthDpはIntのため、端数が切り落とされ411で保存されている 公式Document https://developer.android.com/reference/android/content/res/Configuration#screenWidthDp