Merge changes I2769bc3f,I20171f31 into tm-dev

* changes:
  Use configuration for display rotation instead of display
  Refill all the dispatcher views when updating rotation
This commit is contained in:
Winson Chung
2022-05-10 18:53:30 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 10 deletions

View File

@@ -168,6 +168,7 @@ public class NavigationBarInflaterView extends FrameLayout
public void setButtonDispatchers(SparseArray<ButtonDispatcher> buttonDispatchers) {
mButtonDispatchers = buttonDispatchers;
clearDispatcherViews();
for (int i = 0; i < buttonDispatchers.size(); i++) {
initiallyFill(buttonDispatchers.valueAt(i));
}
@@ -454,12 +455,16 @@ public class NavigationBarInflaterView extends FrameLayout
}
}
private void clearViews() {
private void clearDispatcherViews() {
if (mButtonDispatchers != null) {
for (int i = 0; i < mButtonDispatchers.size(); i++) {
mButtonDispatchers.valueAt(i).clear();
}
}
}
private void clearViews() {
clearDispatcherViews();
clearAllChildren(mHorizontal.findViewById(R.id.nav_buttons));
clearAllChildren(mVertical.findViewById(R.id.nav_buttons));
}

View File

@@ -317,7 +317,7 @@ public class NavigationBarView extends FrameLayout {
R.drawable.ic_sysbar_rotate_button_ccw_start_90,
R.drawable.ic_sysbar_rotate_button_cw_start_0,
R.drawable.ic_sysbar_rotate_button_cw_start_90,
() -> getDisplay().getRotation());
() -> mCurrentRotation);
mConfiguration = new Configuration();
mTmpLastConfiguration = new Configuration();
@@ -538,6 +538,7 @@ public class NavigationBarView extends FrameLayout {
mRotationButtonController.setRotationButton(mRotationContextButton,
mRotationButtonListener);
}
mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers);
}
public KeyButtonDrawable getBackDrawable() {
@@ -978,15 +979,27 @@ public class NavigationBarView extends FrameLayout {
return mCurrentRotation != rotation;
}
private void updateCurrentRotation() {
final int rotation = mConfiguration.windowConfiguration.getDisplayRotation();
if (mCurrentRotation == rotation) {
return;
}
mCurrentRotation = rotation;
mNavigationInflaterView.setAlternativeOrder(mCurrentRotation == Surface.ROTATION_90);
mDeadZone.onConfigurationChanged(mCurrentRotation);
if (DEBUG) {
Log.d(TAG, "updateCurrentRotation(): rot=" + mCurrentRotation);
}
}
private void updateCurrentView() {
resetViews();
mCurrentView = mIsVertical ? mVertical : mHorizontal;
mCurrentView.setVisibility(View.VISIBLE);
mNavigationInflaterView.setVertical(mIsVertical);
mCurrentRotation = getContextDisplay().getRotation();
mNavigationInflaterView.setAlternativeOrder(mCurrentRotation == Surface.ROTATION_90);
mNavigationInflaterView.updateButtonDispatchersCurrentView();
updateLayoutTransitionsEnabled();
updateCurrentRotation();
}
private void resetViews() {
@@ -1019,17 +1032,11 @@ public class NavigationBarView extends FrameLayout {
public void reorient() {
updateCurrentView();
((NavigationBarFrame) getRootView()).setDeadZone(mDeadZone);
mDeadZone.onConfigurationChanged(mCurrentRotation);
// force the low profile & disabled states into compliance
mBarTransitions.init();
if (DEBUG) {
Log.d(TAG, "reorient(): rot=" + mCurrentRotation);
}
// Resolve layout direction if not resolved since components changing layout direction such
// as changing languages will recreate this view and the direction will be resolved later
if (!isLayoutDirectionResolved()) {
@@ -1100,6 +1107,7 @@ public class NavigationBarView extends FrameLayout {
boolean uiCarModeChanged = updateCarMode();
updateIcons(mTmpLastConfiguration);
updateRecentsIcon();
updateCurrentRotation();
mEdgeBackGestureHandler.onConfigurationChanged(mConfiguration);
if (uiCarModeChanged || mTmpLastConfiguration.densityDpi != mConfiguration.densityDpi
|| mTmpLastConfiguration.getLayoutDirection() != mConfiguration.getLayoutDirection()) {