Image List



Image List

Alexa Image Listテンプレート(AlexaImageList)は、画像とテキストのスクロールリストを表示します。AlexaImageListは全画面に表示されるテンプレートであり、オプションでヘッダー、フッター、背景を表示します。リストに表示する画像ベースの項目を指定して、リストの外観(区切り線を挿入する、項目に番号を付けるなど)を設定できます。ユーザーがリストから項目を選択したときに実行するコマンドも指定できます。

alexa-layoutsパッケージを読み込む

AlexaImageListを使用するには、alexa-layoutsパッケージを読み込みます

alexa-layoutsパッケージの最新バージョンは1.1.0です。AlexaImageListはバージョン1.1.0で導入されました。

AlexaImageListのパラメーター

type以外のパラメーターはすべてオプションです。

名前 デフォルト 説明 追加されたバージョン

backgroundAlign

文字列

center

背景画像または背景ビデオの配置を指定します。

1.1.0

backgroundBlur

ブール値

false

trueの場合、背景画像にぼかしが入ります。backgroundImageSourceを設定している場合にのみ適用します。

1.1.0

backgroundColorOverlay

ブール値

false

trueの場合、背景にレイヤーが適用されます。画像やビデオで、項目の上に表示されるテキストが読み取りやすくなります。

1.1.0

backgroundColor

なし

背景色として使用する色です。backgroundImageSourcebackgroundVideoSourceのいずれも指定していない場合に使用します。

1.1.0

backgroundImageSource

文字列

なし

背景画像ソースのURLです。backgroundVideoSourceを指定していない場合に使用します。

1.1.0

backgroundOverlayGradient

ブール値

false

trueの場合、背景にグラデーションが適用されます。

1.1.0

backgroundScale

文字列

best-fill

背景画像または背景ビデオのサイズを調整する方法を指定します。

1.1.0

backgroundVideoSource

ビデオソース

なし

背景ビデオのソースです。Videoコンポーネントのsourceプロパティと同様の形式でソースを指定します。

1.1.0

defaultImageSource

文字列

imageSourceが定義されていないリスト項目に使用するデフォルトの画像のURLです。これは、画像コンテナが空にならないようにするために使用します。imageSourceがないすべてのリスト項目に対して、同じdefaultImageSourceが使用されます。

1.1.0

headerAttributionImage

文字列

なし

アトリビューションの画像ソースのURLです。headerAttributionPrimacyがtrueの場合、またはタイトル/サブタイトルとアトリビューションの両方を表示するデバイスにのみ表示されます。

1.1.0

headerAttributionPrimacy

ブール値

true

画面サイズにより1つの要素しか表示できないデバイスでは、アトリビューションが優先されます。falseに設定すると、タイトルとサブタイトルが表示されます。

1.1.0

headerAttributionText

文字列

なし

ヘッダーで表示するアトリビューションのテキストです。headerAttributionImageが指定されておらず、かつ、headerAttributionPrimacytrueの場合、またはデバイスがタイトル/サブタイトルとアトリビューションの両方を表示する場合のみ表示されます。

1.1.0

headerBackButtonAccessibilityLabel

文字列

なし

スクリーンリーダーを使用するユーザーに、戻るボタンについて説明するアクセシビリティラベルです。

1.1.0

headerBackButtonCommand

コマンド

{"type":"SendEvent","arguments":["goBack"]}

ユーザーが戻るボタンを選択したときに実行するコマンドです。

1.1.0

headerBackButton

ブール値

false

trueの場合、ヘッダーに戻るボタンを表示します。ユーザーがこのボタンをクリックしたときに実行するコマンドを指定するには、headerBackButtonCommandプロパティを設定します。

1.1.0

headerBackgroundColor

文字列

transparent

ヘッダーの背景色として使用するオプションの色の値です。

1.1.0

headerDivider

ブール値

false

trueの場合、ヘッダーの下に区切り線を表示して、コンテンツと区別できるようにします。

1.1.0

headerSubtitle

文字列

なし

ヘッダーで表示する第2テキストです。

1.1.0

headerTitle

文字列

なし

ヘッダーで表示する第1テキストです。

1.1.0

hintText

文字列

なし

フッターに表示するヒントテキストです。正しいウェイクワードをヒントに追加するには、textToHintを使用します。imageMetadataPrimacyがfalseでない限り、小型デバイスでは表示されません。

1.1.0

imageAlignment

文字列

center

listItems内の項目のimageAlignmentオプションのデフォルトを設定しますAlexaImageListItemimageAlignmentプロパティを参照してください。

1.1.0

imageAspectRatio

文字列

square

リスト内のすべての項目の画像バウンディングボックスに使用するアスペクト比です。オプションは、square、round、standard_landscape、standard_portrait、poster_landscape、poster_portrait、widescreenです。このプロパティは、AlexaImageレスポンシブ対応コンポーネントのimageAspectRatioプロパティと同じように機能します。ただし、バウンディングボックスの高さと幅はアスペクト比に基づいて事前に定義されており、変更することはできません。すべてのリスト項目は、常に同じアスペクト比を使用します。

1.1.0

imageBlurredBackground

ブール値

false

listItems内の項目のimageBlurredBackgroundオプションのデフォルトを設定しますAlexaImageListItemimageBlurredBackgroundプロパティを参照してください。

1.1.0

imageHideScrim

ブール値

false

listItems内の項目のimageHideScrimオプションのデフォルトを設定しますAlexaImageListItemimageHideScrimプロパティを参照してください。

1.1.0

imageMetadataPrimacy

ブール値

true

trueの場合、小型デバイスでhintTextを非表示にし、secondaryTexttertiaryTextを表示します。これをfalseに設定すると、secondaryTexttertiaryTextが非表示になり、代わりにhintTextが表示されます。大型デバイスではテキスト項目とhintTextの両方を表示するスペースがあるため、このプロパティは無視されます。

1.1.0

imageRoundedCorner

ブール値

true

listItems内の項目のimageRoundedCornerオプションのデフォルトを設定しますAlexaImageListItemimageRoundedCornerプロパティを参照してください。

1.1.0

imageScale

文字列

best-fit

listItems内の項目のimageScaleオプションのデフォルトを設定しますAlexaImageListItemimageScaleプロパティを参照してください。

1.1.0

listItems

AlexaImageListItemの配列

リストに表示する項目の配列です。各項目は、AlexaImageListItemで定義されているものと同じプロパティを持つオブジェクトです。リスト項目を指定するを参照してください。

1.1.0

primaryAction

コマンド

なし

listItems内の項目のprimaryActionオプションのデフォルトを設定します。これは、ユーザーがリストから項目を選択したときにトリガーされるコマンドに設定します。AlexaImageListItemprimaryActionプロパティを参照してください。

1.1.0

theme

文字列

dark

指定したテーマ(lightまたはdark)に応じて色が切り替わります。デフォルトのテーマはdarkです。

1.1.0

type

文字列

なし

常にAlexaImageListに設定されます。

1.1.0

videoAudioTrack

文字列

foreground

ビデオを再生する際に流すオーディオトラックです。foregroundbackgroundnoneのいずれかです。

1.1.0

videoAutoPlay

ブール値

false

trueの場合、ドキュメントがデバイスに表示されるとビデオが自動的に再生されます。backgroundVideoSourceを設定している場合に適用します。

1.1.0

リスト項目を指定する

AlexaImageListテンプレートは、listItemsプロパティに項目の配列が入ることを想定しています。各項目は、AlexaImageListItemレスポンシブ対応コンポーネントで定義されているものと同じプロパティを持つオブジェクトです。

以下は、imageListDataというデータソース内の項目の配列の例です。

{
  "imageListData": {
    "listItemsToShow": [
      {
        "primaryText": "1番目のリスト項目です。",
        "secondaryText": "第2テキストです。",
        "imageSource": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gruyere.png",
        "imageProgressBarPercentage": 90,
        "imageShowProgressBar": false
      },
      {
        "primaryText": "2番目のリスト項目です。",
        "secondaryText": "第2テキストです。",
        "tertiaryText": "第3テキストです。",
        "imageSource": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gorgonzola.png",
        "providerText": "プロバイダーテキストです。",
        "imageProgressBarPercentage": 50
      },
      {
        "primaryText": "画像なし、デフォルトを使用します。",
        "secondaryText": "第2テキストです。"
      },
      {
        "primaryText": "4番目のリスト項目です。",
        "secondaryText": "進捗バーは表示しません。",
        "imageSource": "https://d2o906d8ln7ui1.cloudfront.net/images/tl_brie.png"
      },
      {
        "primaryText": "5番目のリスト項目です。",
        "secondaryText": "背景をぼかします。",
        "imageSource": "https://d2o906d8ln7ui1.cloudfront.net/images/MollyforBT7.png"
      },
      {
        "primaryText": "6番目のリスト項目です(折り返しのある長いテキストです)。",
        "secondaryText": "切り詰めのある長い第2テキストです。",
        "imageSource": "https://d2o906d8ln7ui1.cloudfront.net/images/sm_blue.png"
      }
    ]
  }
}

次に、${imageListData.listItemsToShow}式を使用して、この配列をlistItemsプロパティにバインドします。

{
  "type": "AlexaImageList",
  "listItems": "${imageListData.listItemsToShow}",
  "defaultImageSource": "https://d2o906d8ln7ui1.cloudfront.net/images/BT7_Background.png",
  "imageBlurredBackground": true,
  "primaryAction": {
    "type": "SendEvent",
    "arguments": [
      "ListItemSelected",
      "${ordinal}"
    ]
  }
}

リスト項目のデフォルトを設定する

AlexaImageListテンプレートには、AlexaImageListItemのプロパティに対応するプロパティが含まれています。対応するプロパティを使用して、これらのプロパティのデフォルト値を設定します。

デフォルトには次の2種類があります。

  • 個々の項目に対して設定または上書きできるデフォルト - AlexaImageListは個々の項目に指定された値が利用可能な場合はその値を使用し、使用できない場合はAlexaImageListで提供される値を使用します。

    たとえば、リスト全体に対してimageScalebest-fitに設定し、リストの1つの項目に対してbest-fillに設定するように上書きできます。

  • 常にリスト内のすべての項目に適用されるデフォルト - AlexaImageListは常にこれらのプロパティに対してAlexaImageListで指定された値を使用します。個々の項目に設定された対応するプロパティの値は無視されます。

    たとえば、リスト全体にimageAspectRatioを設定する必要があります。一部の項目を正方形として表示し、一部の項目を円として表示するリストは作成できません。リスト項目のimageAspectRatioの値は無視されます。

デフォルトとして使用するプロパティの一覧を次の表に示します。

プロパティ 項目の上書きが可能
defaultImageSource
imageAlignment
imageAspectRatio
imageBlurredBackground
imageHideScrim
ImageMetadataPrimacy
imageRoundedCorner
imageScale
primaryAction

各プロパティの詳細については、AlexaImageListItemを参照してください。

各リスト項目のアクションを指定する

AlexaImageListはインタラクティブです。ユーザーはリストの項目を選択できます。primaryActionプロパティに、ユーザーが項目を選択したときに実行するコマンドを設定します。

AlexaImageListコンポーネントでprimaryActionを設定すると、AlexaImageListはリストの各項目にこのコマンドを渡します。

個々のリスト項目のコマンドを上書きするには、リスト項目自体にprimaryActionプロパティを設定します。

以下は、SendEventコマンドを使用してスキルにUserEventリクエストを送信する方法の例です。選択した項目を表す数をSendEvent.arguments配列の一部として渡します。

{
  "primaryAction": {
    "type": "SendEvent",
    "arguments": [
      "ListItemSelected",
      "${ordinal}"
    ]
  }
}

AlexaImageListおよびdynamicIndexListデータソース

AlexaImageListテンプレートはSequenceを使用します。つまり、dynamicIndexListデータソースを使用できます。dynamicIndexListデータソースを使用すると、次のことを実行できます。

  • ユーザーがコンテンツをスクロールすると、大きなリストの項目を徐々に表示します(遅延読み込み)。
  • データソースが既に表示された後で項目を更新し、完全に新しいドキュメントを送信することなく画面上の値を変更できます。

AlexaImageListとdynamicIndexListデータソースを組み合わせて使用する方法

  1. dynamicIndexListデータソースに記載されているdynamicIndexListの構造に従います。この構造で定義されていない他のプロパティは含めないでください。
  2. リスト項目オブジェクトをデータソースのitems配列に配置します。
  3. データソースをAlexaImageListlistItemsプロパティにバインドします。このバインドは、カスタムレイアウトのSequencedataプロパティにデータソースをバインドすることと同じです。

以下は、dynamicIndexListデータソースを使用するAlexaImageListを含むドキュメントの例です。

dynamicIndexListデータソースの定義の詳細については、dynamicIndexListデータソースを参照してください。

データソースの管理に使用するディレクティブとリクエストの詳細については、Alexa.Presentation.APLインターフェースのリファレンスを参照してください。

AlexaImageListの例

この例では、リスト項目を選択すると、“ListItemSelected”とリスト項目の番号を持つUserEventがスキルに送信されます。