Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
テスト
公開
収益化
ユーザーエンゲージメント
デバイスの仕様
リソース

ディスプレイとレイアウト

ディスプレイとレイアウト

Fire TVデバイスでは、デバイスの画面密度に応じて、1080pまたは720pのUIキャンバスにアプリのUIがレンダリングされます。テレビでうまくレンダリングするには、レイアウトで画面の解像度、密度、密度に依存しないピクセル(dp)を考慮する必要があります。

このドキュメントでは、Amazon Fire TVデバイス向けのUIレイアウトを構築するための技術情報を説明します。TVデザインに関するガイドライン全般については、デザインとユーザーエクスペリエンス(UX)に関するガイドラインを参照してください。

画面サイズと解像度

Fireタブレットなど、多くのAndroidデバイスでは画面サイズが固定されており、解像度も1種類だけです。一方、Amazon Fire TVデバイスでは任意のサイズの画面に接続して、720pまたは1080pの解像度を利用することができます。

レイアウトをどの解像度でも同じサイズに保つには、サイズをピクセルではなくdp単位で指定します。

次の表は、Fire TVデバイスの各UIキャンバスのサイズ、画面密度、ディスプレイ解像度(dp単位)を示しています。

UIキャンバス キャンバスサイズ(ピクセル) 密度識別子 ディスプレイ解像度(dp) 画面サイズ識別子
1080p 1920 x 1080 xhdpi(320) 960 x 540 large
720p 1280 x 720 tvdpi(213) ~960 x 540 large

デバイスがUIキャンバスを設定します。これは、アプリのUIがレンダリングされるサーフェスです。UIキャンバスは、接続されているテレビの出力解像度と異なる場合があります。Android は各キャンバスの密度に合わせてdp単位をスケーリングするため、各キャンバスの表示解像度は約 960 x 540 dp です。dpでレイアウトを作成すると、すべてのFire TVデバイスで同じようにレンダリングされ、デバイスごとに変更する必要はありません。

ディスプレイの向き

Amazon Fire TVデバイスのディスプレイは、横向きに固定されています。デバイスに回転または向きの変更を求めるリクエストに対しては、次の結果が返されます。

メソッド 結果
Display.getRotation() 0 (ROTATION_0)
Display.getOrientation()(廃止) 0 (ORIENTATION_UNDEFINED)

リソース構成

Amazon Fire TV以外のデバイス(タブレットなど)で動作するアプリを設計する場合は、デバイスの種類ごとに異なるレイアウトとドローアブルを作成し、さまざまなデバイス構成に対応する名前が付けられたres/のサブディレクトリに保存できます。これらのリソース構成の使用方法について詳しくは、Android 画面の互換性の概要をご覧ください。

次の表では、Amazon Fire TVデバイスで利用可能なリソース構成について説明します。

構成 値
最小幅 sw540dp
使用可能な幅 w960dp
使用可能な高さ h540dp
画面サイズ large
画面縦横比 long
画面の向き land(TVアプリは常に横向きです)
UIモード television
ナイトモード notnight
画面のピクセル密度 xhdpi(1080p UIキャンバス)またはtvdpi(720p UIキャンバス)
タッチスクリーンタイプ notouch
キーボードの使用可否 keyssoft
プライマリテキスト入力メソッド nokeys
ナビゲーションキーの使用可否 navexposed
プライマリノンタッチナビゲーションメソッド dpad
プラットフォームバージョン v17

レイアウトのベストプラクティス

アプリがすべてのUIキャンバスで正しくレンダリングされるように、次の方法に従ってください。

  • UIのサイズをpxではなくdpで設定します。 1920 x 1080などのピクセル値をレイアウトやコードにハードコーディングしないでください。
  • ウィンドウから画面サイズを取得します。 WindowMetrics(APIレベル30以上)、Resources.getDisplayMetrics()、またはConfigurationを使用してください。UIキャンバスではなくTVパネルの解像度を報告するDisplay.Modeは使用しないでください。
  • レイアウトやアセットを密度の閾値で調整しないでください。 たとえば、densityDpi >= 320というチェックはtvdpiキャンバスでは失敗します。代わりにリソース修飾子またはdpベースのサイズを使用してください。
  • 表示されたサイズで画像をリクエストしてデコードします。 現在の密度(dp ×DisplayMetrics.density)からピクセルサイズを計算し、フォーカスに適用されたズームを含めます。固定の1080pピクセルサイズの画像をリクエストしないでください。

次の例では、ウィンドウからUIキャンバスサイズを読み取り、画像リクエスト用のdpサイズをピクセルに変換します:

import kotlin.math.roundToInt

// UIキャンバスサイズをDisplay.Mode からではなく、ウィンドウから読み取ります。
val metrics = resources.displayMetrics
val canvasWidthPx = metrics.widthPixels    // xhdpiでは1920、tvdpiでは1280
val canvasHeightPx = metrics.heightPixels  // xhdpiでは1080、tvdpiでは720

//現在の密度のdpサイズをピクセルに変換します。
fun dpToPx(dp: Float): Int = (dp * resources.displayMetrics.density).roundToInt()

//ピントが合うと1.1倍にズームする、幅200dpのポスターのサイズ。
val posterWidthPx = dpToPx(200f * 1.1f)    // xhdpiでは440、tvdpiでは293

Last updated: 2026年10月30日