mirror of
https://github.com/androidx/media.git
synced 2025-05-03 21:57:46 +08:00
Increase touch target height of timebar in StyledPlayerControlView
This change also introduces gravity attribute to DefaultTimeBar. PiperOrigin-RevId: 342573167
This commit is contained in:
parent
6b31a3eea5
commit
ee3eba07ac
@ -36,7 +36,9 @@
|
|||||||
`LeanbackPlayerAdapter` and use `ControlDispatcher` for dispatching
|
`LeanbackPlayerAdapter` and use `ControlDispatcher` for dispatching
|
||||||
prepare instead
|
prepare instead
|
||||||
([#7882](https://github.com/google/ExoPlayer/issues/7882)).
|
([#7882](https://github.com/google/ExoPlayer/issues/7882)).
|
||||||
* Switch StyledPlayerView button controls to borderless ripples.
|
* Switch `StyledPlayerControlView` button controls to borderless ripples.
|
||||||
|
* Add `bar_gravity` attribute into `DefaultTimeBar`.
|
||||||
|
* Increase seekbar's touch target height in `StyledPlayerControlView`.
|
||||||
* Audio:
|
* Audio:
|
||||||
* Retry playback after some types of `AudioTrack` error.
|
* Retry playback after some types of `AudioTrack` error.
|
||||||
* Work around `AudioManager` crashes when calling `getStreamVolume`
|
* Work around `AudioManager` crashes when calling `getStreamVolume`
|
||||||
|
@ -152,6 +152,15 @@ public class DefaultTimeBar extends View implements TimeBar {
|
|||||||
/** Default color for played ad markers. */
|
/** Default color for played ad markers. */
|
||||||
public static final int DEFAULT_PLAYED_AD_MARKER_COLOR = 0x33FFFF00;
|
public static final int DEFAULT_PLAYED_AD_MARKER_COLOR = 0x33FFFF00;
|
||||||
|
|
||||||
|
// LINT.IfChange
|
||||||
|
/** Vertical gravity for progress bar to be located at the center in the view. */
|
||||||
|
public static final int BAR_GRAVITY_CENTER = 0;
|
||||||
|
/** Vertical gravity for progress bar to be located at the bottom in the view. */
|
||||||
|
public static final int BAR_GRAVITY_BOTTOM = 1;
|
||||||
|
/** Vertical gravity for progress bar to be located at the top in the view. */
|
||||||
|
public static final int BAR_GRAVITY_TOP = 2;
|
||||||
|
// LINT.ThenChange(../../../../../../../../../ui/src/main/res/values/attrs.xml)
|
||||||
|
|
||||||
/** The threshold in dps above the bar at which touch events trigger fine scrub mode. */
|
/** The threshold in dps above the bar at which touch events trigger fine scrub mode. */
|
||||||
private static final int FINE_SCRUB_Y_THRESHOLD_DP = -50;
|
private static final int FINE_SCRUB_Y_THRESHOLD_DP = -50;
|
||||||
/** The ratio by which times are reduced in fine scrub mode. */
|
/** The ratio by which times are reduced in fine scrub mode. */
|
||||||
@ -186,6 +195,7 @@ public class DefaultTimeBar extends View implements TimeBar {
|
|||||||
@Nullable private final Drawable scrubberDrawable;
|
@Nullable private final Drawable scrubberDrawable;
|
||||||
private final int barHeight;
|
private final int barHeight;
|
||||||
private final int touchTargetHeight;
|
private final int touchTargetHeight;
|
||||||
|
private final int barGravity;
|
||||||
private final int adMarkerWidth;
|
private final int adMarkerWidth;
|
||||||
private final int scrubberEnabledSize;
|
private final int scrubberEnabledSize;
|
||||||
private final int scrubberDisabledSize;
|
private final int scrubberDisabledSize;
|
||||||
@ -286,6 +296,7 @@ public class DefaultTimeBar extends View implements TimeBar {
|
|||||||
defaultBarHeight);
|
defaultBarHeight);
|
||||||
touchTargetHeight = a.getDimensionPixelSize(R.styleable.DefaultTimeBar_touch_target_height,
|
touchTargetHeight = a.getDimensionPixelSize(R.styleable.DefaultTimeBar_touch_target_height,
|
||||||
defaultTouchTargetHeight);
|
defaultTouchTargetHeight);
|
||||||
|
barGravity = a.getInt(R.styleable.DefaultTimeBar_bar_gravity, BAR_GRAVITY_CENTER);
|
||||||
adMarkerWidth = a.getDimensionPixelSize(R.styleable.DefaultTimeBar_ad_marker_width,
|
adMarkerWidth = a.getDimensionPixelSize(R.styleable.DefaultTimeBar_ad_marker_width,
|
||||||
defaultAdMarkerWidth);
|
defaultAdMarkerWidth);
|
||||||
scrubberEnabledSize = a.getDimensionPixelSize(
|
scrubberEnabledSize = a.getDimensionPixelSize(
|
||||||
@ -318,6 +329,7 @@ public class DefaultTimeBar extends View implements TimeBar {
|
|||||||
} else {
|
} else {
|
||||||
barHeight = defaultBarHeight;
|
barHeight = defaultBarHeight;
|
||||||
touchTargetHeight = defaultTouchTargetHeight;
|
touchTargetHeight = defaultTouchTargetHeight;
|
||||||
|
barGravity = BAR_GRAVITY_CENTER;
|
||||||
adMarkerWidth = defaultAdMarkerWidth;
|
adMarkerWidth = defaultAdMarkerWidth;
|
||||||
scrubberEnabledSize = defaultScrubberEnabledSize;
|
scrubberEnabledSize = defaultScrubberEnabledSize;
|
||||||
scrubberDisabledSize = defaultScrubberDisabledSize;
|
scrubberDisabledSize = defaultScrubberDisabledSize;
|
||||||
@ -659,7 +671,14 @@ public class DefaultTimeBar extends View implements TimeBar {
|
|||||||
int barY = (height - touchTargetHeight) / 2;
|
int barY = (height - touchTargetHeight) / 2;
|
||||||
int seekLeft = getPaddingLeft();
|
int seekLeft = getPaddingLeft();
|
||||||
int seekRight = width - getPaddingRight();
|
int seekRight = width - getPaddingRight();
|
||||||
int progressY = barY + (touchTargetHeight - barHeight) / 2;
|
int progressY;
|
||||||
|
if (barGravity == BAR_GRAVITY_BOTTOM) {
|
||||||
|
progressY = barY + touchTargetHeight - (getPaddingBottom() + scrubberPadding + barHeight / 2);
|
||||||
|
} else if (barGravity == BAR_GRAVITY_TOP) {
|
||||||
|
progressY = barY + getPaddingTop() + scrubberPadding - barHeight / 2;
|
||||||
|
} else {
|
||||||
|
progressY = barY + (touchTargetHeight - barHeight) / 2;
|
||||||
|
}
|
||||||
seekBounds.set(seekLeft, barY, seekRight, barY + touchTargetHeight);
|
seekBounds.set(seekLeft, barY, seekRight, barY + touchTargetHeight);
|
||||||
progressBar.set(seekBounds.left + scrubberPadding, progressY,
|
progressBar.set(seekBounds.left + scrubberPadding, progressY,
|
||||||
seekBounds.right - scrubberPadding, progressY + barHeight);
|
seekBounds.right - scrubberPadding, progressY + barHeight);
|
||||||
|
@ -74,6 +74,11 @@
|
|||||||
|
|
||||||
<!-- DefaultTimeBar attributes -->
|
<!-- DefaultTimeBar attributes -->
|
||||||
<attr name="bar_height" format="dimension"/>
|
<attr name="bar_height" format="dimension"/>
|
||||||
|
<attr name="bar_gravity" format="enum">
|
||||||
|
<enum name="center" value="0"/>
|
||||||
|
<enum name="bottom" value="1"/>
|
||||||
|
<enum name="top" value="2"/>
|
||||||
|
</attr>
|
||||||
<attr name="touch_target_height" format="dimension"/>
|
<attr name="touch_target_height" format="dimension"/>
|
||||||
<attr name="ad_marker_width" format="dimension"/>
|
<attr name="ad_marker_width" format="dimension"/>
|
||||||
<attr name="scrubber_enabled_size" format="dimension"/>
|
<attr name="scrubber_enabled_size" format="dimension"/>
|
||||||
@ -154,6 +159,7 @@
|
|||||||
<attr name="animation_enabled"/>
|
<attr name="animation_enabled"/>
|
||||||
<!-- DefaultTimeBar attributes -->
|
<!-- DefaultTimeBar attributes -->
|
||||||
<attr name="bar_height"/>
|
<attr name="bar_height"/>
|
||||||
|
<attr name="bar_gravity"/>
|
||||||
<attr name="touch_target_height"/>
|
<attr name="touch_target_height"/>
|
||||||
<attr name="ad_marker_width"/>
|
<attr name="ad_marker_width"/>
|
||||||
<attr name="scrubber_enabled_size"/>
|
<attr name="scrubber_enabled_size"/>
|
||||||
@ -186,6 +192,7 @@
|
|||||||
<attr name="controller_layout_id"/>
|
<attr name="controller_layout_id"/>
|
||||||
<!-- DefaultTimeBar attributes -->
|
<!-- DefaultTimeBar attributes -->
|
||||||
<attr name="bar_height"/>
|
<attr name="bar_height"/>
|
||||||
|
<attr name="bar_gravity"/>
|
||||||
<attr name="touch_target_height"/>
|
<attr name="touch_target_height"/>
|
||||||
<attr name="ad_marker_width"/>
|
<attr name="ad_marker_width"/>
|
||||||
<attr name="scrubber_enabled_size"/>
|
<attr name="scrubber_enabled_size"/>
|
||||||
@ -217,6 +224,7 @@
|
|||||||
<attr name="animation_enabled"/>
|
<attr name="animation_enabled"/>
|
||||||
<!-- DefaultTimeBar attributes -->
|
<!-- DefaultTimeBar attributes -->
|
||||||
<attr name="bar_height"/>
|
<attr name="bar_height"/>
|
||||||
|
<attr name="bar_gravity"/>
|
||||||
<attr name="touch_target_height"/>
|
<attr name="touch_target_height"/>
|
||||||
<attr name="ad_marker_width"/>
|
<attr name="ad_marker_width"/>
|
||||||
<attr name="scrubber_enabled_size"/>
|
<attr name="scrubber_enabled_size"/>
|
||||||
@ -233,6 +241,7 @@
|
|||||||
|
|
||||||
<declare-styleable name="DefaultTimeBar">
|
<declare-styleable name="DefaultTimeBar">
|
||||||
<attr name="bar_height"/>
|
<attr name="bar_height"/>
|
||||||
|
<attr name="bar_gravity"/>
|
||||||
<attr name="touch_target_height"/>
|
<attr name="touch_target_height"/>
|
||||||
<attr name="ad_marker_width"/>
|
<attr name="ad_marker_width"/>
|
||||||
<attr name="scrubber_enabled_size"/>
|
<attr name="scrubber_enabled_size"/>
|
||||||
|
@ -38,8 +38,8 @@
|
|||||||
<dimen name="exo_styled_progress_bar_height">2dp</dimen>
|
<dimen name="exo_styled_progress_bar_height">2dp</dimen>
|
||||||
<dimen name="exo_styled_progress_enabled_thumb_size">10dp</dimen>
|
<dimen name="exo_styled_progress_enabled_thumb_size">10dp</dimen>
|
||||||
<dimen name="exo_styled_progress_dragged_thumb_size">14dp</dimen>
|
<dimen name="exo_styled_progress_dragged_thumb_size">14dp</dimen>
|
||||||
<dimen name="exo_styled_progress_layout_height">14dp</dimen>
|
<dimen name="exo_styled_progress_layout_height">48dp</dimen>
|
||||||
<dimen name="exo_styled_progress_touch_target_height">14dp</dimen>
|
<dimen name="exo_styled_progress_touch_target_height">48dp</dimen>
|
||||||
<dimen name="exo_styled_progress_margin_bottom">52dp</dimen>
|
<dimen name="exo_styled_progress_margin_bottom">52dp</dimen>
|
||||||
|
|
||||||
<dimen name="exo_bottom_bar_height">60dp</dimen>
|
<dimen name="exo_bottom_bar_height">60dp</dimen>
|
||||||
|
@ -188,6 +188,7 @@
|
|||||||
|
|
||||||
<style name="ExoStyledControls.TimeBar">
|
<style name="ExoStyledControls.TimeBar">
|
||||||
<item name="bar_height">@dimen/exo_styled_progress_bar_height</item>
|
<item name="bar_height">@dimen/exo_styled_progress_bar_height</item>
|
||||||
|
<item name="bar_gravity">bottom</item>
|
||||||
<item name="touch_target_height">@dimen/exo_styled_progress_touch_target_height</item>
|
<item name="touch_target_height">@dimen/exo_styled_progress_touch_target_height</item>
|
||||||
<item name="scrubber_enabled_size">@dimen/exo_styled_progress_enabled_thumb_size</item>
|
<item name="scrubber_enabled_size">@dimen/exo_styled_progress_enabled_thumb_size</item>
|
||||||
<item name="scrubber_dragged_size">@dimen/exo_styled_progress_dragged_thumb_size</item>
|
<item name="scrubber_dragged_size">@dimen/exo_styled_progress_dragged_thumb_size</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user