Vega Carouselのアップデート
- ビューのリサイクルを修正しました。
- Carouselがレイアウトを自動的に決定するようになったため、
getItemLayoutやlayoutIdなどのレイアウトプロパティを削除しました。 - プロパティのリストを拡張して、Carouselをさらにカスタマイズできるようにしました。
- Carouselで現在選択されているアイテムが変更されるたびに通知する新しいコールバックプロパティを追加しました。
- ライブラリが、システムバンドルではなくアプリバンドルになりました(詳細については以下のセクションを参照してください)。
アプリバンドル
このバージョンのCarouselはアプリにバンドルされているため、リリース前にnpmを更新して、最新バージョンを使用していることを確認する必要があります。アプリにバンドルされていることで、新しいCarouselの変更をいつアプリに取り込むかを、より詳細に制御できるようになります。
プロパティのグループ化
itemStyleプロパティとanimationDurationプロパティを他のプロパティとグループ化できるようになりました。
例:
Vega Carouselのインポート
例
水平カルーセル
この例は、フォーカス状態と画像のレンダリングを含む、基本的な水平カルーセルの実装を示しています。このコンポーネントは、アイテムの取得を管理するためにdataAdapterパターンを使用しており、押下して選択した際のアイテムに対するスケールアニメーションも含まれています。
垂直カルーセル
この例は、カスタム選択枠を使用して縦スクロールするカルーセルを構成する方法を示しています。この実装には、黄色のストローク効果を持つ赤いボーダースタイルが含まれており、ナビゲーション中にアイテムを固定するためにアンカー選択戦略を使用しています。異種カルーセル
この例は、インデックスに応じて2つの異なるレイアウトを交互に切り替えることで、1行内に異なる種類のアイテムを表示できるCarouselの機能を示しています。偶数インデックスのアイテムは幅200ピクセルのレイアウトを使用し、奇数インデックスのアイテムは幅500ピクセルのレイアウトを使用します。これにより、柔軟なコンテンツ表示が可能であることを示しています。Style
このスタイルシートの例では、横スクロールと縦スクロールの両方の向きに対応したCarouselコンポーネントのスタイル定数を定義しています。これには、メインのカルーセル用コンテナスタイル(黒い背景のフルスクリーン)、2種類のサイズ(幅200ピクセルと500ピクセル)のアイテムコンテナ、および固定サイズの向きごとのレイアウト(横向きは高さ420ピクセル、縦向きは幅250ピクセル)があります。カスタム型
次の例では、カルーセルのアイテムやスクロール可能なラッパーコンポーネントのプロパティを定義するために使用できるカスタム型を示しています。-
ItemType:個々のカルーセルアイテムの構造を表すカスタムデータ型。 プロパティ:url (string)プロパティは、カルーセルアイテムに表示される画像のURLです。url (string)プロパティは、カルーセルに渡されるアイテム、、およびScrollablePropsを定義します。 -
ScrollableProps:スクロール可能なカルーセルラッパーコンポーネントのプロパティインターフェイス。 プロパティ:data (ItemType[])プロパティは、カルーセルにレンダリングされるアイテムオブジェクトの配列です。data (ItemType[])プロパティは、Horizontal、Vertical、Heterogeneousのスクロール可能なラッパーコンポーネントにおいて、プロパティの型安全性を確保するために使用されます。これにより、これらのコンポーネントに渡されるデータが想定される構造と一致することが保証されます。
機能
データアダプター
Vega Carouselは、さまざまなコールバック関数を含むdataAdapterを提供できるようにすることで、より柔軟なカスタマイズをサポートしています。詳細については、Carouselアイテムデータアダプターのコールバック関数のセクションを参照してください。
Carouselアイテム情報を含むdataという配列があると仮定すると、次の例に示すようにdataAdapter関数を実装できます。
選択戦略
SelectionStrategyプロパティは、D-padを使用してリスト内を移動したときに、リストがどのようにスクロールし、アイテムを再配置するかを制御します。
Anchored
anchoredスタイルでは、選択したアイテムは最初のアイテムの位置に固定されたままになります。スクロールすると、選択したアイテムがその位置に固定されたままになるように、アイテムが再配置されます。
natural
naturalスタイルでは、選択したアイテムはリストの最初または最後に達するまでカルーセルの向きの方向に移動します。
Pinned
pinnedスタイルでは、スクロール中に選択したアイテムを指定の位置にピン留めして、アイテムが大きくなるようにスクロールします。ユーザーがリストの最初または最後に近づくと、スクロール動作はスムーズにnaturalな流れに変わります。
オプションのpinnedSelectedItemOffsetプロパティを使用すると、SelectionStrategyがpinnedの場合の、選択したアイテムのピンの位置を定義できます。
pinnedSelectedItemOffsetプロパティは、選択したアイテムがCarouselのビューポートのどこに固定(ピン留め)されるかを決定します。この位置は次の2つの方法で指定できます。
- ビューポートのサイズのパーセンテージ(0~100%):
- 垂直カルーセルの場合:高さのパーセンテージ
- 水平カルーセルの場合:幅のパーセンテージ
- プリセット値:
- 開始(0%と等しい)
- 中央(50%と等しい)
- 終了(100%と等しい)
可変スクロール速度
Carouselコンポーネントには、複数のAnimationDurationPropsを通じてスクロール速度を制御する新しい機能が導入されています。FlatlistやFlashlistなどの既存のコンポーネントとは異なり、この機能は柔軟性に優れているため、スクロール操作を細かく調整できます。
itemPressedDurationプロパティは、Carouselアイテムを押したときのアニメーション時間を制御します。itemScrollDurationプロパティは、Carouselの各アイテムにスクロールする際に使用されるアニメーション時間を制御します。containerSelectionChangeDurationプロパティは、選択したCarouselコンテナを変更するときのアニメーション時間を制御します。
選択境界線
Carouselコンポーネントは、選択時にUIアイテムの周囲に境界線を表示することをサポートしています。境界線のスタイルを設定したり、選択したアイテムのコンテンツと境界線の描画方法を選択したりできます。selectionBorderプロパティを定義することで境界線を有効にできます。選択範囲の境界線のデフォルトのプロパティを次の例に示します。
borderStrategyプロパティをサポートしています。このプロパティは次の2種類の戦略をサポートしています。
outset- アイテムの元の境界の外側に境界線が描画されるため、アイテムのコンテンツサイズは同一のままですが、アイテム全体のサイズは大きくなります。inset- アイテムの境界内にアイテムのコンテンツ上に境界線が描画されるため、アイテムのコンテンツサイズは同一のままですが、アイテムのコンテンツの一部は境界線によってトリミングされます。アイテム全体のサイズは変わりません。
プロパティ
選択範囲の境界線のプロパティ
アニメーション時間のプロパティ
Carouselアイテムのスタイルプロパティ
Carouselアイテムデータアダプターのコールバック関数
Carouselのメソッド
Carouselコンポーネントは、ナビゲーション体験をプログラムで制御するためのメソッドを提供します。以下のメソッドには、現在のコンポーネントのインスタンスをrefプロパティに渡すことでアクセスできます。
トラブルシューティング
垂直スクロールは設定された高さでのみ機能する
垂直スクロール(特にナチュラルスクロール)の場合、containerStyleを高さの固定値で設定する必要があります。

