summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Faust <colefaust@google.com>2020-08-24 16:57:44 -0700
committerCole Faust <colefaust@google.com>2020-08-24 17:54:07 -0700
commit0ffd80310bb9d1510514a0ff9215495da9a44db5 (patch)
tree8a51f592d7a42f34f910833fefa0809db9c7a736
parent35b6b0d38860237842ee61e964361027a178a7e1 (diff)
downloadMedia-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
-rw-r--r--src/com/android/car/media/BrowseViewController.java13
-rw-r--r--src/com/android/car/media/GuidelinesUpdater.java12
-rw-r--r--src/com/android/car/media/ViewControllerBase.java14
-rw-r--r--src/com/android/car/media/widgets/AppBarController.java6
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()