Fix taskbar 3-button truncation on rotate am: c0b30dc266

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/17109868

Change-Id: I0f81a210269a36d46d2250502abddd36c2f7f9c8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Schneider Victor-tulias
2022-05-03 13:26:25 +00:00
committed by Automerger Merge Worker
7 changed files with 95 additions and 16 deletions

View File

@@ -43,6 +43,7 @@ import com.android.launcher3.util.OnboardingPrefs;
import com.android.quickstep.AnimatedFloat;
import com.android.quickstep.RecentsAnimationCallbacks;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Stream;
@@ -57,7 +58,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
private final BaseQuickstepLauncher mLauncher;
private final DeviceProfile.OnDeviceProfileChangeListener mOnDeviceProfileChangeListener =
this::onStashedInAppChanged;
dp -> {
onStashedInAppChanged(dp);
if (mControllers != null && mControllers.taskbarViewController != null) {
mControllers.taskbarViewController.onRotationChanged(dp);
}
};
// Initialized in init.
private AnimatedFloat mTaskbarOverrideBackgroundAlpha;
@@ -65,15 +71,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
private final TaskbarLauncherStateController
mTaskbarLauncherStateController = new TaskbarLauncherStateController();
private final DeviceProfile.OnDeviceProfileChangeListener mProfileChangeListener =
new DeviceProfile.OnDeviceProfileChangeListener() {
@Override
public void onDeviceProfileChanged(DeviceProfile dp) {
mControllers.taskbarViewController.onRotationChanged(
mLauncher.getDeviceProfile());
}
};
public LauncherTaskbarUIController(BaseQuickstepLauncher launcher) {
mLauncher = launcher;
}
@@ -93,7 +90,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
onStashedInAppChanged(mLauncher.getDeviceProfile());
mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
mLauncher.addOnDeviceProfileChangeListener(mProfileChangeListener);
}
public boolean supportsVisualStashing() {
return mControllers.taskbarStashController.supportsVisualStashing();
}
@Override
@@ -102,9 +102,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
onLauncherResumedOrPaused(false);
mTaskbarLauncherStateController.onDestroy();
mLauncher.removeOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
mLauncher.setTaskbarUIController(null);
mLauncher.removeOnDeviceProfileChangeListener(mProfileChangeListener);
mLauncher.removeOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
updateTaskTransitionSpec(true);
}
@@ -271,4 +270,16 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
// gesture ends, start drawing taskbar's background again since launcher might stop drawing.
forceHideBackground(inProgress);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
super.dumpLogs(prefix, pw);
pw.println(String.format(
"%s\tmTaskbarOverrideBackgroundAlpha=%.2f",
prefix,
mTaskbarOverrideBackgroundAlpha.value));
mTaskbarLauncherStateController.dumpLogs(prefix + "\t", pw);
}
}

View File

@@ -187,9 +187,12 @@ public class TaskbarControllers {
return;
}
pw.println(String.format(
"%s\tmAreAllControllersInitialized=%b", prefix, mAreAllControllersInitialized));
for (LoggableTaskbarController controller : mControllersToLog) {
controller.dumpLogs(prefix + "\t", pw);
}
uiController.dumpLogs(prefix + "\t", pw);
rotationButtonController.dumpLogs(prefix + "\t", pw);
}

View File

@@ -42,7 +42,9 @@ import com.android.quickstep.views.RecentsView;
import com.android.systemui.animation.ViewRootSync;
import com.android.systemui.shared.recents.model.ThumbnailData;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.StringJoiner;
import java.util.function.Consumer;
import java.util.function.Supplier;
@@ -476,4 +478,48 @@ import java.util.function.Supplier;
controller.applyState();
}
}
private static String getStateString(int flags) {
StringJoiner str = new StringJoiner("|");
str.add((flags & FLAG_RESUMED) != 0 ? "FLAG_RESUMED" : "");
str.add((flags & FLAG_RECENTS_ANIMATION_RUNNING) != 0
? "FLAG_RECENTS_ANIMATION_RUNNING" : "");
str.add((flags & FLAG_TRANSITION_STATE_RUNNING) != 0
? "FLAG_TRANSITION_STATE_RUNNING" : "");
return str.toString();
}
protected void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarLauncherStateController:");
pw.println(String.format(
"%s\tmIconAlignmentForResumedState=%.2f",
prefix,
mIconAlignmentForResumedState.value));
pw.println(String.format(
"%s\tmIconAlignmentForGestureState=%.2f",
prefix,
mIconAlignmentForGestureState.value));
pw.println(String.format(
"%s\tmIconAlignmentForLauncherState=%.2f",
prefix,
mIconAlignmentForLauncherState.value));
pw.println(String.format(
"%s\tmTaskbarBackgroundAlpha=%.2f", prefix, mTaskbarBackgroundAlpha.value));
pw.println(String.format(
"%s\tmIconAlphaForHome=%.2f", prefix, mIconAlphaForHome.getValue()));
pw.println(String.format("%s\tmPrevState=%s", prefix, getStateString(mPrevState)));
pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
pw.println(String.format("%s\tmLauncherState=%s", prefix, mLauncherState));
pw.println(String.format(
"%s\tmIsAnimatingToLauncherViaGesture=%b",
prefix,
mIsAnimatingToLauncherViaGesture));
pw.println(String.format(
"%s\tmIsAnimatingToLauncherViaResume=%b",
prefix,
mIsAnimatingToLauncherViaResume));
pw.println(String.format(
"%s\tmShouldDelayLauncherStateAnim=%b", prefix, mShouldDelayLauncherStateAnim));
}
}

View File

@@ -275,7 +275,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
return !mIsStashed && isInApp();
}
private boolean isInApp() {
public boolean isInApp() {
return hasAnyFlag(FLAGS_IN_APP);
}

View File

@@ -22,6 +22,7 @@ import androidx.annotation.CallSuper;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.ItemInfoWithIcon;
import java.io.PrintWriter;
import java.util.stream.Stream;
/**
@@ -86,4 +87,12 @@ public class TaskbarUIController {
stashController.applyState();
}
}
@CallSuper
protected void dumpLogs(String prefix, PrintWriter pw) {
pw.println(String.format(
"%sTaskbarUIController: using an instance of %s",
prefix,
getClass().getSimpleName()));
}
}

View File

@@ -289,10 +289,12 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar
}
public void onRotationChanged(DeviceProfile deviceProfile) {
if (areIconsVisible()) {
if (mControllers.taskbarStashController.isInApp()) {
// We only translate on rotation when on home
return;
}
mActivity.setTaskbarWindowHeight(
deviceProfile.taskbarSize + deviceProfile.getTaskbarOffsetY());
mTaskbarNavButtonTranslationY.updateValue(-deviceProfile.getTaskbarOffsetY());
}

View File

@@ -22,10 +22,12 @@ import android.content.Context;
import android.graphics.Rect;
import android.os.SystemProperties;
import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.taskbar.LauncherTaskbarUIController;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.Themes;
import com.android.quickstep.util.LayoutUtils;
@@ -93,7 +95,13 @@ public class OverviewState extends LauncherState {
@Override
public boolean isTaskbarStashed(Launcher launcher) {
return true;
if (launcher instanceof BaseQuickstepLauncher) {
LauncherTaskbarUIController uiController =
((BaseQuickstepLauncher) launcher).getTaskbarUIController();
return uiController != null && uiController.supportsVisualStashing();
}
return super.isTaskbarStashed(launcher);
}
@Override