APL Viewportプロパティ



Viewportプロパティ

データバインディングコンテキストには、表示デバイスの動作特性を示すviewportプロパティが含まれています。たとえば、Echo Showのviewportには次のプロパティがあります。

"viewport": {
  "width": 1024,
  "height": 600,
  "pixelWidth": 1024,
  "pixelHeight": 600,
  "shape": "rectangle",
  "dpi": 160,
  "theme": "dark"
}

スキルで条件付きロジックを使用することで、viewportに応じて異なる応答を提供できます。

関連トピック: スキルのLambda関数でのviewport特性

プロパティ

viewportプロパティでは、次のプロパティが定義されています。

プロパティ 型/値 説明
dpi 整数 viewportのピクセル密度です。
height 整数 dp単位のviewportの高さです。
pixelHeight 整数 ピクセル単位のviewportの高さです。
pixelWidth 整数 ピクセル単位のviewportの幅です。
shape roundまたはrectangle viewportの形状です。
width 整数 dp単位のviewportの幅です。
theme lightまたはdark 使用する基本色スキーマです。

dpi

画面非依存ピクセル(dp)は、携帯電話を見るときの距離で画面を持ち、画面のピクセル密度が1インチ(3cm)あたり約160ピクセルであると仮定した場合の画面のビジュアルサイズを表す測定単位です(初代iPhoneの画面では1インチあたり163ピクセルでした)。物理的な大きさが同じ2つの画面を同じ距離から見た場合、画面の実際のピクセル密度にかかわらず、2つの画面のdpディメンションはほぼ同じになります。

viewportのdpi(インチあたりのドット数)とは、人が見たとおりのポイントまたはピクセルのサイズを表した値であり、画面の実際のインチあたりのピクセル数とは異なります。dpiを求める公式は次のとおりです。

dpi = 160 * (ピクセルサイズ/dpサイズ)

簡略化のため、dpiの値は120、160、240、320などのバケットにまとめられています。実際には、メーカーが物理的なサイズと想定される視聴距離に応じて画面のdpiサイズを指定しており、このdpiを基にdpサイズが計算されています。たとえば、1080pのテレビについて、実際の画面サイズにかかわらず、テレビ画面の対角線の長さの約2倍の距離から視聴するようにメーカーから推奨されていました。視聴者に対するテレビの見た目の大きさは一定のため、1080pのテレビのdpiは320であり、pixelHeightは1080、heightは540となります。

shape

画面のshapeは、roundまたはrectangleのどちらかに設定されています。

heightおよびwidth

heightプロパティとwidthプロパティは、画面の現在の画面非依存ピクセル数に設定されます。これらのプロパティが特定のデバイスの固定値であるとは考えないでください。heightwidthには、画面の現在の向きが反映されます。タブレットは横向きモードと縦向きモードで切り替えられるため、そのときのモードに応じた画面のwidthheightがレポートされます。たとえば、1024x600 dpのタブレットのwidthは、横向きモードでは1024、縦向きモードでは600とレポートされます。

pixelHeightおよびpixelWidth

pixelHeightプロパティとpixelWidthプロパティは、画面の現在のピクセル数に設定されます。pixelHeightpixelWidthには、画面の現在の向きが反映されます。タブレットは横向きモードと縦向きモードで切り替えられるため、そのときのモードに応じた画面のpixelHeightpixelWidthがレポートされます。たとえば、1024x600 dpのタブレットのpixelWidthは、横向きモードでは1024、縦向きモードでは600とレポートされます。

theme

themeには、デバイスで使用されている基本色スキーマが反映されます。

  • light: 明るい背景に暗いテキスト
  • dark: 暗い背景に明るいテキスト