SeekBarコンポーネントは、メディアナビゲーション機能を備えた対話型の進行状況コントロールです。基本的な進行状況バーを拡張し、TVメディアプレーヤーでよく使用される高度な再生制御機能を提供します。
使用シナリオ
SeekBarコンポーネントは、次のようなメディアナビゲーション機能を必要とするアプリに最適です。
- ビデオ/オーディオプレーヤー
- タイムラインのスクラブ
- コンテンツのプレビューシステム
- 進行状況の追跡インターフェイス
- 対話型のメディアナビゲーション
ユーザーエクスペリエンス
コアプロパティ
currentValue
必須 コンテンツの進行状況を表す現在の位置の値。
型 number
0からtotalValueまでの値でなければなりません(両端の値を含む)。
totalValue
必須 シークバーの最大値。合計時間または範囲を表します。
型 number
step
D-Padナビゲーションの使用時に増加または減少させる増減分量の値。正の値にすることも、負の値にすることもできます。対話制御プロパティ
disabled
すべてのユーザー操作とそのリモコンイベントを有効または無効にします。boolean\
デフォルト false
disabledWhenNotFocused
trueの場合、シークバーにフォーカスがないときのユーザー操作を無効にします。このプロパティは、フォーカス管理が不可欠なTVインターフェイスにとって重要であり、フォーカス管理をアプリコードで手動で行うのではなく、コンポーネントに自動的に処理させる場合に最適です。
boolean\
デフォルト false
disableThumbnail
サムネイル画像のプレビュー機能を有効または無効にします。サムネイル画像を表示するには、thumbnailImageSourceプロパティを使用します。
boolean\
デフォルト false
trapFocus
SeekBarコンポーネントのフォーカスナビゲーション動作を制御します。
boolean\
デフォルト false
有効にすると、SeekBar内から左右方向にフォーカスを移動するD-padナビゲーションがトラップされます。SeekBarの上または下にあるコントロールへの上下方向のナビゲーションは引き続き機能します。
PartialDisablingConfiguration
どの特定のユーザー操作を無効にするかを制御します。PartialDisablingConfiguration
このプロパティを指定すると、グローバルのdisabledとdisabledWhenNotFocusedの設定がオーバーライドされます。
このプロパティは、特定のボタンだけを無効にする場合に便利です。たとえば、シーク動作(D-Padのrightとleft)を維持したまま、skipForward >>またはskipBackward <<を無効にしたり、カスタム処理のためにデフォルトの動作を削除したりできます。
指定できるアクション:
playPauseskipBackwardskipForwardleftrightselectback
PartialDisablingConfigurationオブジェクトを指定するとき、各アクションのデフォルト値はすべてfalseに設定されます。
注:backボタンを無効にした場合、影響を受けるのはSeekBar内の操作だけで、外部ナビゲーションやコンポーネント外で行われるその他の操作には影響しません。
コールバックプロパティ
onValueChange
スライド中につまみの値が変更されたときに呼び出されるコールバック。(value: number) => void
onSlidingStart
スライド操作が開始されたときに呼び出されるコールバック。D-Padでは、最初に左ボタンまたは右ボタンが押されたとき(キーダウン)にコールバックがトリガーされます。() => void
onSlidingEnd
スライド操作が終了したときに呼び出されるコールバック。D-Padナビゲーションでは、左ボタンまたは右ボタンが解放されたとき(キーアップ)にトリガーされます。() => void | undefined
onRewindPress
ユーザーが早戻しアクションをトリガーしたときに呼び出されるコールバック。デフォルトでは、このボタンを押すと、コンテンツを早戻しする長押し操作がシミュレートされます。 RCUの早戻しボタン(<<)では、解放時(キーアップ)にトリガーされます。
() => void
関連プロパティ:longPressIntervalDuration、stepMultiplierFactor、enableSkipForwardBackwardAcceleration。
onFastForwardPress
ユーザーが早送りアクションをトリガーしたときに呼び出されるコールバック。デフォルトでは、このボタンを押すと、コンテンツを早送りする長押し操作がシミュレートされます。 RCUの早送りボタン(>>)では、解放時(キーアップ)にトリガーされます。
() => void
関連プロパティ:longPressIntervalDuration、stepMultiplierFactor、enableSkipForwardBackwardAcceleration。
onPress
ユーザーがリモコンの選択ボタンを押したときに呼び出されるコールバック。(seekBarThumbValue: number) => void
onPlayPause
ユーザーがリモコンの再生/一時停止ボタンを押したときに呼び出されるコールバック。(seekBarThumbValue: number) => void
onFocus
シークバーがフォーカスを受け取ったときに呼び出されるコールバック。() => void
onBlur
シークバーがフォーカスを失ったときに呼び出されるコールバック。() => void
onSeekInteractionChange
D-Padによるシーク操作中に呼び出されるコールバック。 イベントオブジェクトには、シーク方向を示すdirectionプロパティが含まれています。'forward':右方向のD-Padナビゲーションによるシーク(最初の押下時)'rewind':左方向のD-Padナビゲーションによるシーク(最初の押下時)'fast_forward':右方向の長押しのD-Padナビゲーション'fast_rewind':左方向の長押しのD-Padナビゲーションnull:シーク操作が終了したとき(ユーザーがシーク後にD-Padを離したとき)に送信されます
(event: InteractionEventPayload) => void
イベントシーケンス
onSeekInteractionChangeコールバックは、D-Padの操作中に特定の順序で呼び出されます。
D-Padの右方向の例
- 最初の押下時(キーダウン):
event.direction = 'forward' - 長押しした場合(
longPressDelayの後):event.direction = 'fast_forward' - 解放時(キーアップ):
event.direction = null
- 最初の押下時(キーダウン):
event.direction = 'rewind' - 長押しした場合(
longPressDelayの後):event.direction = 'fast_rewind' - 解放時(キーアップ):
event.direction = null
完全なイベントフロー
長押し操作での完全なシーケンスは次のようになります。視覚的なカスタマイズプロパティ
Markers
シークバーに表示するマーカーの配列。 次の3種類のマーカーがサポートされます。ReactNodeMarker[] | BreakMarker[]
マーカーの種類
- ReactNodeマーカー:複雑な視覚要素を表すカスタムReactコンポーネント。
- ポイントマーカー: シークバーをセグメントに区切る色付きのポイント。通常は広告マーカーに使用されます。
- セグメントマーカー:バーを複数の異なるセグメントに分割するブレークマーカー。
- ReactNodeマーカーをポイントマーカーやセグメントマーカーと組み合わせることはできません。
- ポイントマーカーとセグメントマーカーは併用できます。
- ポイントマーカーの間には少なくとも3%の間隔が必要です。
- ポイントマーカーを配置できる位置は、SeekBarの合計幅の97%までです。
例2
セグメントマーカー
displayAboveThumb
シークバーのつまみの上にレンダリングするカスタムコンテンツ。レンダリング関数またはReactノードを使用できます。レンダリング関数は、{ mode, stepValue, multiplier, focused }の各プロパティを受け取ります。
DisplayAboveThumbType | React.ReactNode
displayBelowThumb
シークバーのつまみの下にレンダリングするカスタムコンテンツ。レンダリング関数またはReactノードを使用できます。(() => React.ReactNode) | React.ReactNode
thumbIcon
つまみのアイコンを表すカスタムコンポーネント。レンダリング関数またはReactノードを使用できます。レンダリング関数は{ focused }プロパティを受け取ります。
((props: ThumbIconProps) => React.ReactNode) | React.ReactNode
注:focusedコールバック引数を受け取る動的なアイコンを使用する場合は、適切なフォーカス動作のためにdisabledWhenNotFocused={true}を設定してください。
currentValueIndicatorColor
進行状況インジケーターの完了済み部分の色。静的な色を使用するか、フォーカス状態に基づいて色を返す関数を使用できます。
型 ColorValue | ((isFocused: boolean) => ColorValue)
barTrackColor
スライダーの未完了部分の色。
型 ColorValue
segmentColors
セグメントのカラー構成。SegmentColorsConfig
segmentColorsのseekColorは適用されません。ブレークマーカーがない場合、バーにセグメントの色は適用されません。
使用例
黄色いセグメントの色
赤いセグメントの色
スタイルプロパティ
barStyle
スライダーバーのスタイルオーバーライド。
型 StyleProp<ViewStyle>
currentValueIndicatorStyle
進行状況インジケーターのスタイルオーバーライド。StyleProp<ViewStyle>
timeShiftIndicatorStyle
タイムシフトインジケーターのスタイルオーバーライド。
型 StyleProp<ViewStyle>
サムネイルプロパティ
thumbnailStyle
サムネイルコンテナのスタイルオーバーライド。StyleProp<ViewStyle>
thumbnailImageSource
サムネイルプレビューの画像ソース。動的なソースを表すレンダリングプロパティを指定できます。((thumbValue: number) => ImageSourcePropType) | ImageSourcePropType
thumbnailImageStyle
サムネイル画像のスタイルオーバーライド。StyleProp<ImageStyle>
thumbnailImageResizeMode
サムネイル画像のサイズ変更モード。ImageResizeMode\
デフォルト "cover"
thumbnailLabel
サムネイルに表示するラベル。動的なコンテンツを表すレンダリングプロパティを指定できます。((thumbValue: number) => string) | string
thumbnailLabelTextStyle
サムネイルラベルテキストのスタイルオーバーライド。StyleProp<TextStyle>
thumbnailLabelContainerStyle
サムネイルラベルコンテナのスタイルオーバーライド。StyleProp<ViewStyle>
操作タイミングのプロパティ
longPressIntervalDuration
D-Padの長押しアクションの間隔の長さ(ミリ秒)。方向キーを押している間、どのくらいの頻度でシークアクションを更新するかを制御します。デフォルトでは、リモコンから送信されるイベントの頻度と一致します。このデフォルト値のままにしておくことをお勧めします。number\
デフォルト 200
例1
長押し時間:200
例2
長押し時間:400
longPressDelay
長押しアクションがトリガーされるまでの時間(ミリ秒)。D-Pad入力では、ユーザーが左方向キーまたは右方向キーを押し続けると長押しがトリガーされます。number\
デフォルト 250
例1
長押し遅延:200
例2
長押し遅延:3000
keyDownThrottleDelay
キーダウンイベントをスロットリングするための遅延時間。キーがすばやく押されたときに、イベント処理が過剰に発生するのを防ぐために役立ちます。number\
デフォルト 0
animationDuration
enableAnimationsがtrueの場合のアニメーションの長さ(ミリ秒)。つまみと進行状況の遷移にかかる時間を制御します。長押し、早送り、早戻しの操作のアニメーションが自然に感じられるようにするには、longPressIntervalDurationとanimationDurationの両方に同じ値を使用します。enableAnimationsがfalseの場合は効果はありません。
number\
デフォルト 200
シーク動作のプロパティ
maxStepValue
長押し中に段階的にシークを加速する場合の最大ステップ値。加速中にシークのステップがどこまで大きくなるかを制限します。number\
デフォルト 160
stepMultiplierFactor
段階的に加速するシークのステップの乗算係数。加速中にどのくらいの速さでシーク速度を上げるかを決定します。この係数がstep値に乗算されます。enableLongPressAccelerationまたはenableSkipForwardBackwardAccelerationが有効な場合にのみ適用されます。
number\
デフォルト 1
例
stepMultiplierFactor={1}:一定の加速 -1x → 2x → 3x → 4x, ..stepMultiplierFactor={2}:高速な加速 - 時間とともに速度が2倍になります。1x → 2x → 4x → 8x, ..stepMultiplierFactor={3}:高速な加速 - 時間とともに速度が3倍になります。1x → 3x → 6x → 12x, ..
stepMultiplierFactorInterval
ステップ乗数を増加させる時間間隔(ミリ秒)。D-Padの左方向または右方向の長押しによる加速中に、どのくらいの頻度でシーク速度を上げるかを制御します。速度の上昇率はstepMultiplierFactorによって処理されます。
number\
デフォルト 1000
lowerSeekLimit
シークバーの範囲内のシーク可能な最小値。この値より前の位置にシークすることを防ぎます。number\
デフォルト 0
upperSeekLimit
シークバーの範囲内のシーク可能な最大値。この値より後の位置にシークすることを防ぎます。number\
デフォルト totalValue
enableLongPressAcceleration
長押し操作中の段階的な加速を有効にします。有効な場合、stepMultiplierFactorとstepMultiplierFactorIntervalの設定に基づいて、ステップ乗数が時間とともに増加します(1倍、2倍、3倍、4倍など)。step値には現在の乗数が乗算されます。これにより、左方向または右方向のキーまたはボタンを押し続けたときにシーク速度が上がります。
boolean\
デフォルト false
enableSkipForwardBackwardAcceleration
早送りまたは早戻し操作中の段階的な加速を有効にします。有効な場合、早送り(>>)ボタンまたは早戻し(<<)ボタンを連続して押すと、stepMultiplierFactorの設定に基づいてステップ乗数が増加します(1倍、2倍、3倍、4倍、5倍など)。step値には現在の乗数が乗算されます。
boolean\
デフォルト false
enableAnimations
シークバーのつまみと進行の動きのアニメーションを有効または無効にします。trueの場合、シークバーは位置の変更を滑らかなアニメーションで表示し、timeShiftIndicatorStyleプロパティは適用されません。falseの場合、位置は即座に変更され、すべての視覚要素がレンダリングされます。
boolean\
デフォルト false

