本記事では画面サイズの取得方法を紹介します。
画面サイズ取得モジュール:Dimensions
ReactNativeでは、画面サイズを取得するためにDimensions
というモジュールが用意されています。
https://reactnative.dev/docs/dimensions
実際に利用した例がこちらになります。
この例では、画面サイズ(window or screen)をDimensions.get("〇〇")
で取得しています。
Dimensions.get("〇〇")
で取得できるのは、実際には複数情報(width
, height
, scale
, fontScale
)です。
さらに、Dimensions.addEventListener("change", function)
で、画面サイズが可変に変わる際に動的に数値を取得できるように対応しています。
subscription?.remove()
は登録したイベントリスナーを解除します。
useEffect
のreturn
として記述されているので、マウントが外れる時(画面遷移する時)に呼ばれます。
WindowとScreenの違いは何?
Dimensions
では2つの画面範囲からサイズを取得できます。
公式サイトの説明は次の通り。
window | Size of the visible Application window. |
screen | Size of the device's screen. |
日本語で言うと、
window
は、アプリケーションの可視領域(ウィンドウ)サイズ。screen
は、デバイスのスクリーンサイズ。
下記の画像が先程のコード例を全画面で見たスクリーンキャプチャになります。
緑色の線で囲まれた部分がScreen
領域、赤色の線で囲まれた部分がWindow
領域になります。
useWindowDimensionsを使えばもっとシンプルに
useWindowDimensions
を使えばもっとシンプル&フレキシブルに画面サイズを取得することができます。
次のコードが、useWindowDimensions
を使った例です。
Dimensions.get("〇〇")
では、useEffect
とDimensions.addEventListener("change", function)
を利用して、フレキシブルに画面サイズを取得しました。
useWindowDimensions
を利用すると、useEffect
内の処理を実現することができます。
とてもシンプルになりましたね。