diff options
author | Cole Faust <colefaust@google.com> | 2020-08-24 16:57:44 -0700 |
---|---|---|
committer | Cole Faust <colefaust@google.com> | 2020-08-24 17:54:07 -0700 |
commit | 0ffd80310bb9d1510514a0ff9215495da9a44db5 (patch) | |
tree | 8a51f592d7a42f34f910833fefa0809db9c7a736 | |
parent | 35b6b0d38860237842ee61e964361027a178a7e1 (diff) | |
download | Media-0ffd80310bb9d1510514a0ff9215495da9a44db5.tar.gz |
Use insets to determine toolbar height
The insets should be used instead of the toolbar height changed
listener. ToolbarController no longer has a height changed
listener, it's deprecated. Media currently gets access to it via
ToolbarControllerImpl, but even that doesn't work when the
OEM-customized layout doesn't have the optional "background"
view used to measure height.
Fixes: 166175768
Test: Manually
Change-Id: I51252affdd5c2b93c702f579975b85146c358d00
4 files changed, 29 insertions, 16 deletions
diff --git a/src/com/android/car/media/BrowseViewController.java b/src/com/android/car/media/BrowseViewController.java index b706130..2f19068 100644 --- a/src/com/android/car/media/BrowseViewController.java +++ b/src/com/android/car/media/BrowseViewController.java @@ -49,6 +49,7 @@ import com.android.car.media.common.source.MediaSource; import com.android.car.media.widgets.AppBarController; import com.android.car.ui.FocusArea; import com.android.car.ui.recyclerview.DelegatingContentLimitingAdapter; +import com.android.car.ui.baselayout.Insets; import com.android.car.ui.toolbar.Toolbar; import com.android.car.uxr.LifeCycleObserverUxrContentLimiter; import com.android.car.uxr.UxrContentLimiterImpl; @@ -345,11 +346,6 @@ public class BrowseViewController extends ViewControllerBase { } @Override - public void onHeightChanged(int height) { - onAppBarHeightChanged(height); - } - - @Override public void onSearch(String query) { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "onSearch: " + query); @@ -431,12 +427,13 @@ public class BrowseViewController extends ViewControllerBase { return currentItem != null ? currentItem.getId() : null; } - private void onAppBarHeightChanged(int height) { + @Override + public void onCarUiInsetsChanged(@NonNull Insets insets) { int leftPadding = mBrowseList.getPaddingLeft(); int rightPadding = mBrowseList.getPaddingRight(); int bottomPadding = mBrowseList.getPaddingBottom(); - mBrowseList.setPadding(leftPadding, height, rightPadding, bottomPadding); - mFocusArea.setHighlightPadding(leftPadding, height, rightPadding, bottomPadding); + mBrowseList.setPadding(leftPadding, insets.getTop(), rightPadding, bottomPadding); + mFocusArea.setHighlightPadding(leftPadding, insets.getTop(), rightPadding, bottomPadding); } void onPlaybackControlsChanged(boolean visible) { diff --git a/src/com/android/car/media/GuidelinesUpdater.java b/src/com/android/car/media/GuidelinesUpdater.java index 4d92a88..7f739c6 100644 --- a/src/com/android/car/media/GuidelinesUpdater.java +++ b/src/com/android/car/media/GuidelinesUpdater.java @@ -26,6 +26,9 @@ import com.android.car.ui.baselayout.Insets; import com.android.car.ui.baselayout.InsetsChangedListener; import com.android.car.ui.core.BaseLayoutController; +import java.util.HashSet; +import java.util.Set; + /** * Applies the insets computed by the car-ui-lib to the spacer views in ui_guides.xml. This allows * the Media app to have different instances of the application bar. @@ -33,6 +36,7 @@ import com.android.car.ui.core.BaseLayoutController; class GuidelinesUpdater implements InsetsChangedListener { private final View mGuidedView; + private final Set<InsetsChangedListener> mListeners = new HashSet<>(); public GuidelinesUpdater(Activity activity, View guidedView) { mGuidedView = guidedView; @@ -43,6 +47,10 @@ class GuidelinesUpdater implements InsetsChangedListener { insetsUpdater.installListeners(); } + public void addListener(InsetsChangedListener listener) { + mListeners.add(listener); + } + // Read the results of the base layout measurements and adjust the guidelines to match public void onCarUiInsetsChanged(@NonNull Insets insets) { View startPad = mGuidedView.findViewById(R.id.ui_content_start_guideline); @@ -66,5 +74,9 @@ class GuidelinesUpdater implements InsetsChangedListener { (ConstraintLayout.LayoutParams)bottomPad.getLayoutParams(); bottom.setMargins(0, 0, 0, insets.getBottom()); bottomPad.setLayoutParams(bottom); + + for (InsetsChangedListener listener : mListeners) { + listener.onCarUiInsetsChanged(insets); + } } } diff --git a/src/com/android/car/media/ViewControllerBase.java b/src/com/android/car/media/ViewControllerBase.java index 14bbda0..cdf8850 100644 --- a/src/com/android/car/media/ViewControllerBase.java +++ b/src/com/android/car/media/ViewControllerBase.java @@ -34,6 +34,7 @@ import android.view.ViewGroup; import androidx.annotation.CallSuper; import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; @@ -42,11 +43,14 @@ import com.android.car.media.common.source.MediaSource; import com.android.car.media.common.source.MediaSourceViewModel; import com.android.car.media.widgets.AppBarController; +import com.android.car.ui.baselayout.Insets; +import com.android.car.ui.baselayout.InsetsChangedListener; + /** * Functionality common to content view controllers. It mainly handles the AppBar view, * which is common to all of them. */ -abstract class ViewControllerBase { +abstract class ViewControllerBase implements InsetsChangedListener { private static final String TAG = "ViewControllerBase"; private final boolean mShouldShowSoundSettings; @@ -81,7 +85,13 @@ abstract class ViewControllerBase { mMediaSourceVM = MediaSourceViewModel.get(activity.getApplication(), MEDIA_SOURCE_MODE_BROWSE); - new GuidelinesUpdater(activity, mContent); + GuidelinesUpdater updater = new GuidelinesUpdater(activity, mContent); + updater.addListener(this); + } + + @Override + public void onCarUiInsetsChanged(@NonNull Insets insets) { + // Overridden in subclasses } CharSequence getAppBarDefaultTitle(@Nullable MediaSource mediaSource) { diff --git a/src/com/android/car/media/widgets/AppBarController.java b/src/com/android/car/media/widgets/AppBarController.java index e319d96..5e4fc62 100644 --- a/src/com/android/car/media/widgets/AppBarController.java +++ b/src/com/android/car/media/widgets/AppBarController.java @@ -79,11 +79,6 @@ public class AppBarController extends ToolbarControllerImpl { * Invoked when the user clicks on the search button */ protected void onSearchSelection() {} - - /** - * Invoked when the height of the toolbar changes - */ - protected void onHeightChanged(int height) {} } public AppBarController(View view) { @@ -100,7 +95,6 @@ public class AppBarController extends ToolbarControllerImpl { return true; }); registerOnSearchListener(query -> mListener.onSearch(query)); - registerToolbarHeightChangeListener(height -> mListener.onHeightChanged(height)); mSearch = MenuItem.Builder.createSearch(mContext, v -> mListener.onSearchSelection()); mSettings = new MenuItem.Builder(mContext) .setToSettings() |