Merge "Tweak lifecycle of nav bar/view" into sc-dev
This commit is contained in:
@@ -31,6 +31,7 @@ import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS;
|
|||||||
import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_NAVIGATION_BARS;
|
import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_NAVIGATION_BARS;
|
||||||
import static android.view.WindowInsetsController.APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS;
|
import static android.view.WindowInsetsController.APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS;
|
||||||
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
|
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
|
||||||
|
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||||
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
|
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
|
||||||
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;
|
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;
|
||||||
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
|
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
|
||||||
@@ -200,7 +201,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
private final UiEventLogger mUiEventLogger;
|
private final UiEventLogger mUiEventLogger;
|
||||||
|
|
||||||
private Bundle mSavedState;
|
private Bundle mSavedState;
|
||||||
private NavigationBarView mNavigationBarView = null;
|
private NavigationBarView mNavigationBarView;
|
||||||
|
|
||||||
private @WindowVisibleState int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
|
private @WindowVisibleState int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
|
||||||
|
|
||||||
@@ -392,7 +393,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
};
|
};
|
||||||
|
|
||||||
private final Runnable mAutoDim = () -> getBarTransitions().setAutoDim(true);
|
private final Runnable mAutoDim = () -> getBarTransitions().setAutoDim(true);
|
||||||
|
private final Runnable mEnableLayoutTransitions = () ->
|
||||||
|
mNavigationBarView.setLayoutTransitionsEnabled(true);
|
||||||
private final Runnable mOnVariableDurationHomeLongClick = () -> {
|
private final Runnable mOnVariableDurationHomeLongClick = () -> {
|
||||||
if (onHomeLongClick(mNavigationBarView.getHomeButton().getCurrentView())) {
|
if (onHomeLongClick(mNavigationBarView.getHomeButton().getCurrentView())) {
|
||||||
mNavigationBarView.getHomeButton().getCurrentView().performHapticFeedback(
|
mNavigationBarView.getHomeButton().getCurrentView().performHapticFeedback(
|
||||||
@@ -488,7 +490,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mA11yBtnMode = mAccessibilityButtonModeObserver.getCurrentAccessibilityButtonMode();
|
mA11yBtnMode = mAccessibilityButtonModeObserver.getCurrentAccessibilityButtonMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public View getView() {
|
public NavigationBarView getView() {
|
||||||
return mNavigationBarView;
|
return mNavigationBarView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,16 +506,19 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
| WindowManager.LayoutParams.FLAG_SLIPPERY,
|
| WindowManager.LayoutParams.FLAG_SLIPPERY,
|
||||||
PixelFormat.TRANSLUCENT);
|
PixelFormat.TRANSLUCENT);
|
||||||
lp.token = new Binder();
|
lp.token = new Binder();
|
||||||
lp.setTitle("NavigationBar" + mContext.getDisplayId());
|
|
||||||
lp.accessibilityTitle = mContext.getString(R.string.nav_bar);
|
lp.accessibilityTitle = mContext.getString(R.string.nav_bar);
|
||||||
lp.windowAnimations = 0;
|
|
||||||
lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
|
lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
|
||||||
|
lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||||
|
lp.windowAnimations = 0;
|
||||||
|
lp.setTitle("NavigationBar" + mContext.getDisplayId());
|
||||||
|
lp.setFitInsetsTypes(0 /* types */);
|
||||||
|
|
||||||
NavigationBarFrame frame = (NavigationBarFrame) LayoutInflater.from(mContext).inflate(
|
NavigationBarFrame frame = (NavigationBarFrame) LayoutInflater.from(mContext).inflate(
|
||||||
R.layout.navigation_bar_window, null);
|
R.layout.navigation_bar_window, null);
|
||||||
View barView = LayoutInflater.from(frame.getContext()).inflate(
|
View barView = LayoutInflater.from(frame.getContext()).inflate(
|
||||||
R.layout.navigation_bar, frame);
|
R.layout.navigation_bar, frame);
|
||||||
barView.addOnAttachStateChangeListener(this);
|
barView.addOnAttachStateChangeListener(this);
|
||||||
|
mNavigationBarView = barView.findViewById(R.id.navigation_bar_view);
|
||||||
|
|
||||||
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + barView);
|
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + barView);
|
||||||
mContext.getSystemService(WindowManager.class).addView(frame, lp);
|
mContext.getSystemService(WindowManager.class).addView(frame, lp);
|
||||||
@@ -533,6 +538,19 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mContentResolver.registerContentObserver(
|
mContentResolver.registerContentObserver(
|
||||||
Settings.Secure.getUriFor(Settings.Secure.ASSIST_TOUCH_GESTURE_ENABLED),
|
Settings.Secure.getUriFor(Settings.Secure.ASSIST_TOUCH_GESTURE_ENABLED),
|
||||||
false, mAssistContentObserver, UserHandle.USER_ALL);
|
false, mAssistContentObserver, UserHandle.USER_ALL);
|
||||||
|
mAllowForceNavBarHandleOpaque = mContext.getResources().getBoolean(
|
||||||
|
R.bool.allow_force_nav_bar_handle_opaque);
|
||||||
|
mForceNavBarHandleOpaque = DeviceConfig.getBoolean(
|
||||||
|
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||||
|
NAV_BAR_HANDLE_FORCE_OPAQUE,
|
||||||
|
/* defaultValue = */ true);
|
||||||
|
mHomeButtonLongPressDurationMs = Optional.of(DeviceConfig.getLong(
|
||||||
|
DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||||
|
HOME_BUTTON_LONG_PRESS_DURATION_MS,
|
||||||
|
/* defaultValue = */ 0
|
||||||
|
)).filter(duration -> duration != 0);
|
||||||
|
DeviceConfig.addOnPropertiesChangedListener(
|
||||||
|
DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post, mOnPropertiesChangedListener);
|
||||||
updateAssistantEntrypoints();
|
updateAssistantEntrypoints();
|
||||||
|
|
||||||
if (savedState != null) {
|
if (savedState != null) {
|
||||||
@@ -543,25 +561,10 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mTransientShown = savedState.getBoolean(EXTRA_TRANSIENT_STATE, false);
|
mTransientShown = savedState.getBoolean(EXTRA_TRANSIENT_STATE, false);
|
||||||
}
|
}
|
||||||
mSavedState = savedState;
|
mSavedState = savedState;
|
||||||
mAccessibilityManagerWrapper.addCallback(mAccessibilityListener);
|
|
||||||
|
|
||||||
// Respect the latest disabled-flags.
|
// Respect the latest disabled-flags.
|
||||||
mCommandQueue.recomputeDisableFlags(mDisplayId, false);
|
mCommandQueue.recomputeDisableFlags(mDisplayId, false);
|
||||||
|
|
||||||
mAllowForceNavBarHandleOpaque = mContext.getResources().getBoolean(
|
|
||||||
R.bool.allow_force_nav_bar_handle_opaque);
|
|
||||||
mForceNavBarHandleOpaque = DeviceConfig.getBoolean(
|
|
||||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
|
||||||
NAV_BAR_HANDLE_FORCE_OPAQUE,
|
|
||||||
/* defaultValue = */ true);
|
|
||||||
mHomeButtonLongPressDurationMs = Optional.of(DeviceConfig.getLong(
|
|
||||||
DeviceConfig.NAMESPACE_SYSTEMUI,
|
|
||||||
HOME_BUTTON_LONG_PRESS_DURATION_MS,
|
|
||||||
/* defaultValue = */ 0
|
|
||||||
)).filter(duration -> duration != 0);
|
|
||||||
DeviceConfig.addOnPropertiesChangedListener(
|
|
||||||
DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post, mOnPropertiesChangedListener);
|
|
||||||
|
|
||||||
mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
|
mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
|
||||||
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
||||||
|
|
||||||
@@ -587,7 +590,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
@Override
|
@Override
|
||||||
public void onViewAttachedToWindow(View v) {
|
public void onViewAttachedToWindow(View v) {
|
||||||
final Display display = v.getDisplay();
|
final Display display = v.getDisplay();
|
||||||
mNavigationBarView = v.findViewById(R.id.navigation_bar_view);
|
|
||||||
mNavigationBarView.setComponents(mStatusBarLazy.get().getPanelController());
|
mNavigationBarView.setComponents(mStatusBarLazy.get().getPanelController());
|
||||||
mNavigationBarView.setDisabledFlags(mDisabledFlags1);
|
mNavigationBarView.setDisabledFlags(mDisabledFlags1);
|
||||||
mNavigationBarView.setOnVerticalChangedListener(this::onVerticalChanged);
|
mNavigationBarView.setOnVerticalChangedListener(this::onVerticalChanged);
|
||||||
@@ -598,6 +600,9 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mNavigationBarView.setNavigationIconHints(mNavigationIconHints);
|
mNavigationBarView.setNavigationIconHints(mNavigationIconHints);
|
||||||
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
|
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
|
||||||
mNavigationBarView.setBehavior(mBehavior);
|
mNavigationBarView.setBehavior(mBehavior);
|
||||||
|
|
||||||
|
mAccessibilityManagerWrapper.addCallback(mAccessibilityListener);
|
||||||
|
|
||||||
mSplitScreenOptional.ifPresent(mNavigationBarView::registerDockedListener);
|
mSplitScreenOptional.ifPresent(mNavigationBarView::registerDockedListener);
|
||||||
mPipOptional.ifPresent(mNavigationBarView::registerPipExclusionBoundsChangeListener);
|
mPipOptional.ifPresent(mNavigationBarView::registerPipExclusionBoundsChangeListener);
|
||||||
|
|
||||||
@@ -657,10 +662,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewDetachedFromWindow(View v) {
|
public void onViewDetachedFromWindow(View v) {
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.getBarTransitions().destroy();
|
||||||
mNavigationBarView.getBarTransitions().destroy();
|
mNavigationBarView.getLightTransitionsController().destroy(mContext);
|
||||||
mNavigationBarView.getLightTransitionsController().destroy(mContext);
|
|
||||||
}
|
|
||||||
mOverviewProxyService.removeCallback(mOverviewProxyListener);
|
mOverviewProxyService.removeCallback(mOverviewProxyListener);
|
||||||
mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver);
|
mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver);
|
||||||
if (mOrientationHandle != null) {
|
if (mOrientationHandle != null) {
|
||||||
@@ -671,6 +674,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mOrientationHandleGlobalLayoutListener);
|
mOrientationHandleGlobalLayoutListener);
|
||||||
}
|
}
|
||||||
mHandler.removeCallbacks(mAutoDim);
|
mHandler.removeCallbacks(mAutoDim);
|
||||||
|
mHandler.removeCallbacks(mOnVariableDurationHomeLongClick);
|
||||||
|
mHandler.removeCallbacks(mEnableLayoutTransitions);
|
||||||
mNavigationBarView = null;
|
mNavigationBarView = null;
|
||||||
mOrientationHandle = null;
|
mOrientationHandle = null;
|
||||||
}
|
}
|
||||||
@@ -682,9 +687,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
outState.putInt(EXTRA_APPEARANCE, mAppearance);
|
outState.putInt(EXTRA_APPEARANCE, mAppearance);
|
||||||
outState.putInt(EXTRA_BEHAVIOR, mBehavior);
|
outState.putInt(EXTRA_BEHAVIOR, mBehavior);
|
||||||
outState.putBoolean(EXTRA_TRANSIENT_STATE, mTransientShown);
|
outState.putBoolean(EXTRA_TRANSIENT_STATE, mTransientShown);
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.getLightTransitionsController().saveState(outState);
|
||||||
mNavigationBarView.getLightTransitionsController().saveState(outState);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -809,15 +812,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
// mOrientedHandle is initialized lazily
|
// mOrientedHandle is initialized lazily
|
||||||
mOrientationHandle.setVisibility(View.GONE);
|
mOrientationHandle.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.setVisibility(View.VISIBLE);
|
||||||
mNavigationBarView.setVisibility(View.VISIBLE);
|
mNavigationBarView.setOrientedHandleSamplingRegion(null);
|
||||||
mNavigationBarView.setOrientedHandleSamplingRegion(null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reconfigureHomeLongClick() {
|
private void reconfigureHomeLongClick() {
|
||||||
if (mNavigationBarView == null
|
if (mNavigationBarView.getHomeButton().getCurrentView() == null) {
|
||||||
|| mNavigationBarView.getHomeButton().getCurrentView() == null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mHomeButtonLongPressDurationMs.isPresent() || !mLongPressHomeEnabled) {
|
if (mHomeButtonLongPressDurationMs.isPresent() || !mLongPressHomeEnabled) {
|
||||||
@@ -844,17 +844,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
pw.println(" mHomeButtonLongPressDurationMs=" + mHomeButtonLongPressDurationMs);
|
pw.println(" mHomeButtonLongPressDurationMs=" + mHomeButtonLongPressDurationMs);
|
||||||
pw.println(" mLongPressHomeEnabled=" + mLongPressHomeEnabled);
|
pw.println(" mLongPressHomeEnabled=" + mLongPressHomeEnabled);
|
||||||
pw.println(" mAssistantTouchGestureEnabled=" + mAssistantTouchGestureEnabled);
|
pw.println(" mAssistantTouchGestureEnabled=" + mAssistantTouchGestureEnabled);
|
||||||
|
pw.println(" mNavigationBarWindowState="
|
||||||
if (mNavigationBarView != null) {
|
+ windowStateToString(mNavigationBarWindowState));
|
||||||
pw.println(" mNavigationBarWindowState="
|
pw.println(" mNavigationBarMode="
|
||||||
+ windowStateToString(mNavigationBarWindowState));
|
+ BarTransitions.modeToString(mNavigationBarMode));
|
||||||
pw.println(" mNavigationBarMode="
|
dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
|
||||||
+ BarTransitions.modeToString(mNavigationBarMode));
|
mNavigationBarView.dump(pw);
|
||||||
dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
|
|
||||||
mNavigationBarView.dump(pw);
|
|
||||||
} else {
|
|
||||||
pw.print(" mNavigationBarView=null");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- CommandQueue Callbacks -----
|
// ----- CommandQueue Callbacks -----
|
||||||
@@ -889,10 +884,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
if (hints == mNavigationIconHints) return;
|
if (hints == mNavigationIconHints) return;
|
||||||
|
|
||||||
mNavigationIconHints = hints;
|
mNavigationIconHints = hints;
|
||||||
|
mNavigationBarView.setNavigationIconHints(hints);
|
||||||
if (mNavigationBarView != null) {
|
|
||||||
mNavigationBarView.setNavigationIconHints(hints);
|
|
||||||
}
|
|
||||||
checkBarModes();
|
checkBarModes();
|
||||||
updateSystemUiStateFlags(-1);
|
updateSystemUiStateFlags(-1);
|
||||||
}
|
}
|
||||||
@@ -911,23 +903,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
orientSecondaryHomeHandle();
|
orientSecondaryHomeHandle();
|
||||||
}
|
}
|
||||||
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state));
|
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state));
|
||||||
|
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
|
||||||
if (mNavigationBarView != null) {
|
|
||||||
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRotationProposal(final int rotation, boolean isValid) {
|
public void onRotationProposal(final int rotation, boolean isValid) {
|
||||||
if (mNavigationBarView == null) {
|
|
||||||
if (RotationContextButton.DEBUG_ROTATION) {
|
|
||||||
Log.v(TAG, "onRotationProposal proposedRotation=" +
|
|
||||||
Surface.rotationToString(rotation) + ", mNavigationBarView is null");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int winRotation = mNavigationBarView.getDisplay().getRotation();
|
final int winRotation = mNavigationBarView.getDisplay().getRotation();
|
||||||
final boolean rotateSuggestionsDisabled = RotationButtonController
|
final boolean rotateSuggestionsDisabled = RotationButtonController
|
||||||
.hasDisable2RotateSuggestionFlag(mDisabledFlags2);
|
.hasDisable2RotateSuggestionFlag(mDisabledFlags2);
|
||||||
@@ -941,8 +922,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
+ ", isValid=" + isValid + ", mNavBarWindowState="
|
+ ", isValid=" + isValid + ", mNavBarWindowState="
|
||||||
+ StatusBarManager.windowStateToString(mNavigationBarWindowState)
|
+ StatusBarManager.windowStateToString(mNavigationBarWindowState)
|
||||||
+ ", rotateSuggestionsDisabled=" + rotateSuggestionsDisabled
|
+ ", rotateSuggestionsDisabled=" + rotateSuggestionsDisabled
|
||||||
+ ", isRotateButtonVisible=" + (mNavigationBarView == null ? "null"
|
+ ", isRotateButtonVisible=" + rotationButton.isVisible());
|
||||||
: rotationButton.isVisible()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Respect the disabled flag, no need for action as flag change callback will handle hiding
|
// Respect the disabled flag, no need for action as flag change callback will handle hiding
|
||||||
@@ -983,9 +963,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
boolean nbModeChanged = false;
|
boolean nbModeChanged = false;
|
||||||
if (mAppearance != appearance) {
|
if (mAppearance != appearance) {
|
||||||
mAppearance = appearance;
|
mAppearance = appearance;
|
||||||
if (getView() == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
nbModeChanged = updateBarMode(barMode(mTransientShown, appearance));
|
nbModeChanged = updateBarMode(barMode(mTransientShown, appearance));
|
||||||
}
|
}
|
||||||
if (mLightBarController != null) {
|
if (mLightBarController != null) {
|
||||||
@@ -994,9 +971,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
if (mBehavior != behavior) {
|
if (mBehavior != behavior) {
|
||||||
mBehavior = behavior;
|
mBehavior = behavior;
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.setBehavior(behavior);
|
||||||
mNavigationBarView.setBehavior(behavior);
|
|
||||||
}
|
|
||||||
updateSystemUiStateFlags(-1);
|
updateSystemUiStateFlags(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1034,12 +1009,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleTransientChanged() {
|
private void handleTransientChanged() {
|
||||||
if (getView() == null) {
|
mNavigationBarView.onTransientStateChanged(mTransientShown);
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (mNavigationBarView != null) {
|
|
||||||
mNavigationBarView.onTransientStateChanged(mTransientShown);
|
|
||||||
}
|
|
||||||
final int barMode = barMode(mTransientShown, mAppearance);
|
final int barMode = barMode(mTransientShown, mAppearance);
|
||||||
if (updateBarMode(barMode) && mLightBarController != null) {
|
if (updateBarMode(barMode) && mLightBarController != null) {
|
||||||
mLightBarController.onNavigationBarModeChanged(barMode);
|
mLightBarController.onNavigationBarModeChanged(barMode);
|
||||||
@@ -1092,9 +1062,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
| StatusBarManager.DISABLE_SEARCH);
|
| StatusBarManager.DISABLE_SEARCH);
|
||||||
if (masked != mDisabledFlags1) {
|
if (masked != mDisabledFlags1) {
|
||||||
mDisabledFlags1 = masked;
|
mDisabledFlags1 = masked;
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.setDisabledFlags(state1);
|
||||||
mNavigationBarView.setDisabledFlags(state1);
|
|
||||||
}
|
|
||||||
updateScreenPinningGestures();
|
updateScreenPinningGestures();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1110,17 +1078,13 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
|
|
||||||
private void setDisabled2Flags(int state2) {
|
private void setDisabled2Flags(int state2) {
|
||||||
// Method only called on change of disable2 flags
|
// Method only called on change of disable2 flags
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.getRotationButtonController().onDisable2FlagChanged(state2);
|
||||||
mNavigationBarView.getRotationButtonController().onDisable2FlagChanged(state2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- Internal stuff -----
|
// ----- Internal stuff -----
|
||||||
|
|
||||||
private void refreshLayout(int layoutDirection) {
|
private void refreshLayout(int layoutDirection) {
|
||||||
if (mNavigationBarView != null) {
|
mNavigationBarView.setLayoutDirection(layoutDirection);
|
||||||
mNavigationBarView.setLayoutDirection(layoutDirection);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean shouldDisableNavbarGestures() {
|
private boolean shouldDisableNavbarGestures() {
|
||||||
@@ -1129,7 +1093,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void repositionNavigationBar() {
|
private void repositionNavigationBar() {
|
||||||
if (mNavigationBarView == null || !mNavigationBarView.isAttachedToWindow()) return;
|
if (!mNavigationBarView.isAttachedToWindow()) return;
|
||||||
|
|
||||||
prepareNavigationBarView();
|
prepareNavigationBarView();
|
||||||
|
|
||||||
@@ -1138,10 +1102,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateScreenPinningGestures() {
|
private void updateScreenPinningGestures() {
|
||||||
if (mNavigationBarView == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change the cancel pin gesture to home and back if recents button is invisible
|
// Change the cancel pin gesture to home and back if recents button is invisible
|
||||||
boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive();
|
boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive();
|
||||||
ButtonDispatcher backButton = mNavigationBarView.getBackButton();
|
ButtonDispatcher backButton = mNavigationBarView.getBackButton();
|
||||||
@@ -1252,10 +1212,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
AssistManager.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS);
|
AssistManager.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS);
|
||||||
mAssistManagerLazy.get().startAssist(args);
|
mAssistManagerLazy.get().startAssist(args);
|
||||||
mStatusBarLazy.get().awakenDreams();
|
mStatusBarLazy.get().awakenDreams();
|
||||||
|
mNavigationBarView.abortCurrentGesture();
|
||||||
if (mNavigationBarView != null) {
|
|
||||||
mNavigationBarView.abortCurrentGesture();
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1405,9 +1362,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void updateAccessibilityServicesState(AccessibilityManager accessibilityManager) {
|
void updateAccessibilityServicesState(AccessibilityManager accessibilityManager) {
|
||||||
if (mNavigationBarView == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
boolean[] feedbackEnabled = new boolean[1];
|
boolean[] feedbackEnabled = new boolean[1];
|
||||||
int a11yFlags = getA11yButtonState(feedbackEnabled);
|
int a11yFlags = getA11yButtonState(feedbackEnabled);
|
||||||
|
|
||||||
@@ -1593,7 +1547,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
|
|
||||||
public void disableAnimationsDuringHide(long delay) {
|
public void disableAnimationsDuringHide(long delay) {
|
||||||
mNavigationBarView.setLayoutTransitionsEnabled(false);
|
mNavigationBarView.setLayoutTransitionsEnabled(false);
|
||||||
mNavigationBarView.postDelayed(() -> mNavigationBarView.setLayoutTransitionsEnabled(true),
|
mHandler.postDelayed(mEnableLayoutTransitions,
|
||||||
delay + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE);
|
delay + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1608,10 +1562,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public NavigationBarTransitions getBarTransitions() {
|
public NavigationBarTransitions getBarTransitions() {
|
||||||
if (mNavigationBarView != null) {
|
return mNavigationBarView.getBarTransitions();
|
||||||
return mNavigationBarView.getBarTransitions();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void finishBarAnimations() {
|
public void finishBarAnimations() {
|
||||||
@@ -1626,8 +1577,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final Consumer<Integer> mRotationWatcher = rotation -> {
|
private final Consumer<Integer> mRotationWatcher = rotation -> {
|
||||||
if (mNavigationBarView != null
|
if (mNavigationBarView.needsReorient(rotation)) {
|
||||||
&& mNavigationBarView.needsReorient(rotation)) {
|
|
||||||
repositionNavigationBar();
|
repositionNavigationBar();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1635,9 +1585,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
|
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (mNavigationBarView == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
if (Intent.ACTION_SCREEN_OFF.equals(action)
|
if (Intent.ACTION_SCREEN_OFF.equals(action)
|
||||||
|| Intent.ACTION_SCREEN_ON.equals(action)) {
|
|| Intent.ACTION_SCREEN_ON.equals(action)) {
|
||||||
|
|||||||
@@ -224,10 +224,7 @@ public class NavigationBarController implements Callbacks,
|
|||||||
if (navBar == null) {
|
if (navBar == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
NavigationBarView view = (NavigationBarView) navBar.getView();
|
navBar.getView().updateStates();
|
||||||
if (view != null) {
|
|
||||||
view.updateStates();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -365,13 +362,12 @@ public class NavigationBarController implements Callbacks,
|
|||||||
mHandler,
|
mHandler,
|
||||||
mNavBarOverlayController,
|
mNavBarOverlayController,
|
||||||
mUiEventLogger);
|
mUiEventLogger);
|
||||||
|
mNavigationBars.put(displayId, navBar);
|
||||||
|
|
||||||
View navigationBarView = navBar.createView(savedState);
|
View navigationBarView = navBar.createView(savedState);
|
||||||
navigationBarView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
navigationBarView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onViewAttachedToWindow(View v) {
|
public void onViewAttachedToWindow(View v) {
|
||||||
mNavigationBars.put(displayId, navBar);
|
|
||||||
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
navBar.setImeWindowStatus(display.getDisplayId(), result.mImeToken,
|
navBar.setImeWindowStatus(display.getDisplayId(), result.mImeToken,
|
||||||
result.mImeWindowVis, result.mImeBackDisposition,
|
result.mImeWindowVis, result.mImeBackDisposition,
|
||||||
@@ -447,7 +443,7 @@ public class NavigationBarController implements Callbacks,
|
|||||||
*/
|
*/
|
||||||
public @Nullable NavigationBarView getNavigationBarView(int displayId) {
|
public @Nullable NavigationBarView getNavigationBarView(int displayId) {
|
||||||
NavigationBar navBar = mNavigationBars.get(displayId);
|
NavigationBar navBar = mNavigationBars.get(displayId);
|
||||||
return (navBar == null) ? null : (NavigationBarView) navBar.getView();
|
return (navBar == null) ? null : navBar.getView();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@link NavigationBar} on the default display. */
|
/** @return {@link NavigationBar} on the default display. */
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ public class ButtonDispatcher {
|
|||||||
private final ArrayList<View> mViews = new ArrayList<>();
|
private final ArrayList<View> mViews = new ArrayList<>();
|
||||||
|
|
||||||
private final int mId;
|
private final int mId;
|
||||||
private final AssistManager mAssistManager;
|
|
||||||
|
|
||||||
private View.OnClickListener mClickListener;
|
private View.OnClickListener mClickListener;
|
||||||
private View.OnTouchListener mTouchListener;
|
private View.OnTouchListener mTouchListener;
|
||||||
@@ -73,7 +72,6 @@ public class ButtonDispatcher {
|
|||||||
|
|
||||||
public ButtonDispatcher(int id) {
|
public ButtonDispatcher(int id) {
|
||||||
mId = id;
|
mId = id;
|
||||||
mAssistManager = Dependency.get(AssistManager.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clear() {
|
public void clear() {
|
||||||
|
|||||||
Reference in New Issue
Block a user