Fix display settings window UI bug for foldable devices.

PiperOrigin-RevId: 481215581
(cherry picked from commit 6cdaf2c031258221939eead3b11075a90e2c742c)
This commit is contained in:
Googler 2022-10-14 20:07:09 +00:00 committed by microkatz
parent 12314abbf0
commit e3d0ee990d

View File

@ -1298,7 +1298,7 @@ public class StyledPlayerControlView extends FrameLayout {
settingsWindow.setHeight(height); settingsWindow.setHeight(height);
} }
private void displaySettingsWindow(RecyclerView.Adapter<?> adapter) { private void displaySettingsWindow(RecyclerView.Adapter<?> adapter, View anchorView) {
settingsView.setAdapter(adapter); settingsView.setAdapter(adapter);
updateSettingsWindowSize(); updateSettingsWindowSize();
@ -1310,7 +1310,7 @@ public class StyledPlayerControlView extends FrameLayout {
int xoff = getWidth() - settingsWindow.getWidth() - settingsWindowMargin; int xoff = getWidth() - settingsWindow.getWidth() - settingsWindowMargin;
int yoff = -settingsWindow.getHeight() - settingsWindowMargin; int yoff = -settingsWindow.getHeight() - settingsWindowMargin;
settingsWindow.showAsDropDown(this, xoff, yoff); settingsWindow.showAsDropDown(anchorView, xoff, yoff);
} }
private void setPlaybackSpeed(float speed) { private void setPlaybackSpeed(float speed) {
@ -1392,9 +1392,9 @@ public class StyledPlayerControlView extends FrameLayout {
private void onSettingViewClicked(int position) { private void onSettingViewClicked(int position) {
if (position == SETTINGS_PLAYBACK_SPEED_POSITION) { if (position == SETTINGS_PLAYBACK_SPEED_POSITION) {
displaySettingsWindow(playbackSpeedAdapter); displaySettingsWindow(playbackSpeedAdapter, checkNotNull(settingsButton));
} else if (position == SETTINGS_AUDIO_TRACK_SELECTION_POSITION) { } else if (position == SETTINGS_AUDIO_TRACK_SELECTION_POSITION) {
displaySettingsWindow(audioTrackSelectionAdapter); displaySettingsWindow(audioTrackSelectionAdapter, checkNotNull(settingsButton));
} else { } else {
settingsWindow.dismiss(); settingsWindow.dismiss();
} }
@ -1688,16 +1688,16 @@ public class StyledPlayerControlView extends FrameLayout {
player.setShuffleModeEnabled(!player.getShuffleModeEnabled()); player.setShuffleModeEnabled(!player.getShuffleModeEnabled());
} else if (settingsButton == view) { } else if (settingsButton == view) {
controlViewLayoutManager.removeHideCallbacks(); controlViewLayoutManager.removeHideCallbacks();
displaySettingsWindow(settingsAdapter); displaySettingsWindow(settingsAdapter, settingsButton);
} else if (playbackSpeedButton == view) { } else if (playbackSpeedButton == view) {
controlViewLayoutManager.removeHideCallbacks(); controlViewLayoutManager.removeHideCallbacks();
displaySettingsWindow(playbackSpeedAdapter); displaySettingsWindow(playbackSpeedAdapter, playbackSpeedButton);
} else if (audioTrackButton == view) { } else if (audioTrackButton == view) {
controlViewLayoutManager.removeHideCallbacks(); controlViewLayoutManager.removeHideCallbacks();
displaySettingsWindow(audioTrackSelectionAdapter); displaySettingsWindow(audioTrackSelectionAdapter, audioTrackButton);
} else if (subtitleButton == view) { } else if (subtitleButton == view) {
controlViewLayoutManager.removeHideCallbacks(); controlViewLayoutManager.removeHideCallbacks();
displaySettingsWindow(textTrackSelectionAdapter); displaySettingsWindow(textTrackSelectionAdapter, subtitleButton);
} }
} }
} }