アプリの画面サイズ(縦横ピクセル)を取得するの?|Size|MediaQuery|Android|Flutter


アプリの画面(縦横)サイズをピクセルで取得したい。

例えば、スマホの画面をスクリーンショットで撮影したら、その画像は 1080px(横)× 1920px(縦)だった。

プログラムでもこのサイズで取得できるのだろうか?


取り方

MediaQuery」を使う。画面サイズに関する情報が手に入る。

---
final size = MediaQuery.of(context).size;
final width = size.width;
final height = size.height;
---

これで縦横サイズは取得できるけど、物理的なピクセル値ではないので要注意!

The size of the media in logical pixels (e.g, the size of the screen). Logical pixels are roughly the same visual size across devices. Physical pixels are the size of the actual hardware pixels on the device. The number of physical pixels per logical pixel is described by the [devicePixelRatio].

物理的なピクセル値に変換するには「devicePixelRatio」が必要だって書いてある。こうだ。

---
final size = MediaQuery.of(context).size;
final widthPixel = size.width * MediaQuery.of(context).devicePixelRatio;
final heightPixel = size.height * MediaQuery.of(context).devicePixelRatio;
---

で、これをログに出力してみたら、1080px(横)× 1872px(縦) だった。

おっと、1920px(縦)とは 48px の誤差がある。どうも、Android だと、画面下部の Navigation Bar だけが、アプリの画面サイズには含まれないようだよ~。


関連する記事


参照した記事


直近に読んでいた漫画(おすすめ)

コメント

このブログの人気の投稿

ImagePicker を操作すると「Lost connection to device.」とだけ言い残して強制終了するの?|iOS|Flutter

Android SDK バージョン(コンパイルに使用する Android API レベル)を変更するの?|compileSdkVersion|SDK|Android|Flutter