Scrollコマンド


Scrollコマンド

スクロール可能なコンポーネントを、指定されたページ数だけ前方または後方にスクロールします。スクロール可能なコンポーネントには、次のものがあります。

プロパティ

Scrollコマンドには、共通のコマンドプロパティに加えて、以下の表に示すプロパティがあります。typeプロパティはScrollに設定します。

コマンドを実行するために値が必要なプロパティの場合、以下の表の「デフォルト」列に「必須」と表示されています。それ以外の場合はデフォルト値が表示されますが、デフォルト値がないこともあります。

プロパティ デフォルト 説明

componentId

セレクター

:source

スクロールするコンポーネントです。

distance

数値またはディメンション

0

スクロールするページ数です。

targetDuration

負でない整数

システムのデフォルト

スクロールアニメーションの目標時間(ミリ秒)です。

distanceにはスクロールするページ数を設定します。たとえば、リストを1ページだけ前にスクロールするには、次のように記述します。

  {
    "type": "Scroll",
    "componentId": "myScrollingList",
    "distance": 1
  }

以下のいずれかが発生すると、スクロールは停止します。

  • 目的地に到達したとき。
  • スクロール可能なコンテンツの最後に到達したとき。
  • ユーザーが画面をタッチしたとき。
  • Alexaが新しいコマンドを送信したとき。新しいコマンドを開始すると、Scrollコマンドが終了し、スクロールが直ちに停止されます。

使用可能なすべてのコンテンツをスムーズにスクロールするには、distanceに大きな数を設定します。たとえば、リストの先頭までスムーズにスクロールバックするには、次のように記述します。

  {
    "type": "Scroll",
    "componentId": "myScrollingList",
    "distance": -10000
  }

Scrollコマンドは、高速モードでは無視されます。

componentId

スクロールするScrollViewSequenceGridSequenceコンポーネントを識別するセレクターです。指定しない場合は、デフォルトで:sourceになります。:sourceセレクターは、Scrollコマンドを発行したコンポーネントをターゲットにします。

distance

スクロールする距離(ページ単位)です。1「ページ」とは、ScrollViewまたはSequenceの幅または高さから、適用されたパディングを除いたものです。負の数字は後方にスクロールします。distanceが0場合、コンポーネントはスクロールしません。

たとえば、高さ400dpのScrollViewの上部と下部に50dpのパディングが設定されているとします。ScrollViewの「ページ」は300dpです。distanceに0.5を指定すると、ページの50%、つまり150dpだけ前にスクロールします。

distanceは、適切なサフィックスを付けて、相対ディメンションまたは絶対ディメンションとして指定することもできます。たとえば、50%33dp25vhなどを指定できます。distanceに50%などの相対的な数値を設定する場合は、0.5などの単純な数値を使用する場合とまったく同じです。可能であれば、100dpなどの絶対ディメンションではなく、50%0.5といった相対ディメンションのスクロール指定を使用してください。これにより、画面のサイズに関係なく、ユーザーに最適な距離だけコンテンツをスクロールできます。

targetDuration

スクロールアニメーションの目標時間(ミリ秒)です。コマンドは指定された時間だけスクロールを試みますが、ランタイムによって異なる場合があります。targetDurationを指定しない場合、コマンドはランタイムで定義されている時間を使用します。targetDurationを0に設定すると、スクロール位置に即座に移動します。

再インフレート時の処理方針

Reinflateコマンドを実行すると、Alexaがドキュメントを再インフレートした後でScrollコマンドを再開できます。コマンドは、ReinflatepreservedSequencers配列で指定されたsequencerで実行されている場合に再開されます。Scrollコマンドでは、ターゲットコンポーネントと残りのdistanceが保存されます。

ターゲットコンポーネントが、再インフレートされた階層内のスクロール可能なコンポーネントでない場合、コマンドは無視されます。

Alexaがドキュメントを再インフレートした後、Scrollコマンドの実行開始時に計算された残りの距離だけスクロールが続行されます。たとえば、高さが400dpのScrollViewで、distance50%に設定してScrollコマンドが開始されたとします。このコマンドは途中で終了したため、全体の高さの25%、合計100dpまでスクロールされており、ドキュメントが再インフレートされた時点で、あと100dpのスクロールが残っていました。再インフレート後にScrollViewの高さが500dpになった場合、Scrollコマンドが再開されると、再インフレート前に計算された100dpだけスクロールされます。

Scrollコマンドの例

以下は、長い項目リストを表示するSequenceの例です。ForwardボタンとBackボタンは、それぞれ1ページの距離でScrollコマンドを実行します。距離を変更するには、データソースのdistanceプロパティを編集します。



このページは役に立ちましたか?

最終更新日: 2025 年 12 月 04 日