Snap for 9406101 from 73d270bf51 to udc-release

Change-Id: If7e209d7f4bc47711936196a5e3b4c1119d562eb
This commit is contained in:
Android Build Coastguard Worker
2022-12-15 02:27:37 +00:00
21 changed files with 216 additions and 102 deletions
+1
View File
@@ -42,6 +42,7 @@
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<!-- for rotating surface by arbitrary degree -->
<uses-permission android:name="android.permission.ROTATE_SURFACE_FLINGER" />
<uses-permission android:name="android.permission.WAKEUP_SURFACE_FLINGER" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_HOME_APP_SEARCH_DATA" />
@@ -18,6 +18,6 @@
android:layout_width="@dimen/taskbar_icon_touch_size"
android:layout_height="@dimen/taskbar_icon_touch_size"
android:contentDescription="@string/all_apps_button_label"
android:backgroundTint="@color/all_apps_button_bg_color"
android:backgroundTint="@android:color/transparent"
android:icon="@drawable/ic_all_apps_button"
/>
@@ -888,6 +888,11 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
return mControllers.taskbarStashController.isStashed();
}
/** Returns {@code true} if taskbar All Apps is open. */
public boolean isTaskbarAllAppsOpen() {
return mControllers.taskbarAllAppsController.isOpen();
}
/**
* Called to start the taskbar translation spring to its settled translation (0).
*/
@@ -15,7 +15,7 @@
*/
package com.android.launcher3.taskbar;
import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE;
import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
import android.animation.PropertyValuesHolder;
import android.content.Context;
@@ -24,6 +24,7 @@ import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Pair;
import android.view.View;
import android.view.animation.Interpolator;
import android.widget.Button;
import com.android.launcher3.Insettable;
@@ -65,6 +66,11 @@ public class TaskbarEduView extends AbstractSlideInView<TaskbarOverlayContext>
handleClose(animate, mTaskbarEduCallbacks.getCloseDuration());
}
@Override
protected Interpolator getIdleInterpolator() {
return EMPHASIZED;
}
@Override
protected boolean isOfType(int type) {
return (type & TYPE_TASKBAR_EDUCATION_DIALOG) != 0;
@@ -157,7 +163,7 @@ public class TaskbarEduView extends AbstractSlideInView<TaskbarOverlayContext>
mIsOpen = true;
mOpenCloseAnimator.setValues(
PropertyValuesHolder.ofFloat(TRANSLATION_SHIFT, TRANSLATION_SHIFT_OPENED));
mOpenCloseAnimator.setInterpolator(AGGRESSIVE_EASE);
mOpenCloseAnimator.setInterpolator(EMPHASIZED);
mOpenCloseAnimator.setDuration(mTaskbarEduCallbacks.getOpenDuration()).start();
}
@@ -87,7 +87,8 @@ public class TaskbarUIController {
* Manually closes the overlay window.
*/
public void hideOverlayWindow() {
if (!DisplayController.isTransientTaskbar(mControllers.taskbarActivityContext)) {
if (!DisplayController.isTransientTaskbar(mControllers.taskbarActivityContext)
|| mControllers.taskbarAllAppsController.isOpen()) {
mControllers.taskbarOverlayController.hideWindow();
}
}
@@ -104,12 +105,19 @@ public class TaskbarUIController {
}
/**
* Returns true iff taskbar is stashed.
* Returns {@code true} iff taskbar is stashed.
*/
public boolean isTaskbarStashed() {
return mControllers.taskbarStashController.isStashed();
}
/**
* Returns {@code true} iff taskbar All Apps is open.
*/
public boolean isTaskbarAllAppsOpen() {
return mControllers.taskbarAllAppsController.isOpen();
}
/**
* Called at the end of the swipe gesture on Transient taskbar.
*/
@@ -63,6 +63,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
private final int mIconTouchSize;
private final int mItemMarginLeftRight;
private final int mItemPadding;
private final boolean mIsRtl;
private final TaskbarActivityContext mActivityContext;
@@ -100,6 +101,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
super(context, attrs, defStyleAttr, defStyleRes);
mActivityContext = ActivityContext.lookupContext(context);
mIconLayoutBounds = mActivityContext.getTransientTaskbarBounds();
mIsRtl = Utilities.isRtl(getResources());
Resources resources = getResources();
mIconTouchSize = resources.getDimensionPixelSize(R.dimen.taskbar_icon_touch_size);
@@ -122,6 +124,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
mAllAppsButton = LayoutInflater.from(context)
.inflate(R.layout.taskbar_all_apps_button, this, false);
mAllAppsButton.setPadding(mItemPadding, mItemPadding, mItemPadding, mItemPadding);
mAllAppsButton.setScaleX(mIsRtl ? -1 : 1);
if (mActivityContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PC)) {
mAllAppsButton.setVisibility(GONE);
}
@@ -254,11 +257,11 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
}
if (mAllAppsButton != null) {
int index = Utilities.isRtl(getResources()) ? 0 : getChildCount();
int index = mIsRtl ? getChildCount() : 0;
addView(mAllAppsButton, index);
}
if (mActivityContext.getDeviceProfile().isQsbInline) {
addView(mQsb, Utilities.isRtl(getResources()) ? getChildCount() : 0);
addView(mQsb, mIsRtl ? getChildCount() : 0);
// Always set QSB to invisible after re-adding.
mQsb.setVisibility(View.INVISIBLE);
}
@@ -401,8 +401,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar
// Note that there is no All Apps button in the hotseat, this position is only used
// as its convenient for animation purposes.
positionInHotseat = Utilities.isRtl(child.getResources())
? -1
: taskbarDp.numShownHotseatIcons;
? taskbarDp.numShownHotseatIcons
: -1;
} else if (child.getTag() instanceof ItemInfo) {
positionInHotseat = ((ItemInfo) child.getTag()).screenId;
} else {
@@ -42,6 +42,7 @@ import java.util.List;
public final class TaskbarAllAppsController {
private TaskbarControllers mControllers;
private @Nullable TaskbarAllAppsSlideInView mSlideInView;
private @Nullable TaskbarAllAppsContainerView mAppsView;
// Application data models.
@@ -107,6 +108,11 @@ public final class TaskbarAllAppsController {
show(true);
}
/** Returns {@code true} if All Apps is open. */
public boolean isOpen() {
return mSlideInView != null && mSlideInView.isOpen();
}
private void show(boolean animate) {
if (mAppsView != null) {
return;
@@ -117,15 +123,15 @@ public final class TaskbarAllAppsController {
TaskbarOverlayContext overlayContext =
mControllers.taskbarOverlayController.requestWindow();
TaskbarAllAppsSlideInView slideInView =
(TaskbarAllAppsSlideInView) overlayContext.getLayoutInflater().inflate(
R.layout.taskbar_all_apps, overlayContext.getDragLayer(), false);
slideInView.addOnCloseListener(() -> {
mSlideInView = (TaskbarAllAppsSlideInView) overlayContext.getLayoutInflater().inflate(
R.layout.taskbar_all_apps, overlayContext.getDragLayer(), false);
mSlideInView.addOnCloseListener(() -> {
mControllers.getSharedState().allAppsVisible = false;
mSlideInView = null;
mAppsView = null;
});
TaskbarAllAppsViewController viewController = new TaskbarAllAppsViewController(
overlayContext, slideInView, mControllers);
overlayContext, mSlideInView, mControllers);
viewController.show(animate);
mAppsView = overlayContext.getAppsView();
@@ -15,8 +15,6 @@
*/
package com.android.launcher3.taskbar.allapps;
import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_AUTO;
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_TASKBAR_ALL_APPS;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT;
@@ -90,20 +88,19 @@ final class TaskbarAllAppsViewController {
}
private void setUpTaskbarStashing() {
mTaskbarStashController.updateStateForFlag(
DisplayController.isTransientTaskbar(mContext)
? FLAG_STASHED_IN_APP_AUTO
: FLAG_STASHED_IN_TASKBAR_ALL_APPS,
true);
mTaskbarStashController.applyState(
ALL_APPS.getTransitionDuration(mContext, true /* isToState */));
mTaskbarStashController.updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, true);
mTaskbarStashController.applyState(mOverlayController.getOpenDuration());
mNavbarButtonsViewController.setSlideInViewVisible(true);
mSlideInView.setOnCloseBeginListener(() -> {
mNavbarButtonsViewController.setSlideInViewVisible(false);
AbstractFloatingView.closeOpenContainer(
mContext, AbstractFloatingView.TYPE_ACTION_POPUP);
if (!DisplayController.isTransientTaskbar(mContext)) {
if (DisplayController.isTransientTaskbar(mContext)) {
mTaskbarStashController.updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, false);
mTaskbarStashController.applyState(mOverlayController.getCloseDuration());
} else {
// Post in case view is closing due to gesture navigation. If a gesture is in
// progress, wait to unstash until after the gesture is finished.
MAIN_EXECUTOR.post(() -> mTaskbarStashController.resetFlagIfNoGestureInProgress(
@@ -317,7 +317,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
private final int mTaskbarAppWindowThreshold;
private final int mTaskbarHomeOverviewThreshold;
private final int mTaskbarCatchUpThreshold;
private boolean mTaskbarAlreadyOpen;
private final boolean mTaskbarAlreadyOpen;
private final boolean mIsTaskbarAllAppsOpen;
private final boolean mIsTransientTaskbar;
// May be set to false when mIsTransientTaskbar is true.
private boolean mCanSlowSwipeGoHome = true;
@@ -358,6 +359,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
&& DisplayController.isTransientTaskbar(mActivity);
TaskbarUIController controller = mActivityInterface.getTaskbarController();
mTaskbarAlreadyOpen = controller != null && !controller.isTaskbarStashed();
mIsTaskbarAllAppsOpen = controller != null && controller.isTaskbarAllAppsOpen();
mTaskbarAppWindowThreshold = res
.getDimensionPixelSize(ENABLE_TASKBAR_REVISED_THRESHOLDS.get()
? R.dimen.taskbar_app_window_threshold_v2
@@ -2261,7 +2263,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
return displacement;
}
if (mTaskbarAlreadyOpen) {
if (mTaskbarAlreadyOpen || mIsTaskbarAllAppsOpen) {
return displacement;
}
@@ -56,6 +56,7 @@ public class TaskbarStashInputConsumer extends DelegateInputConsumer {
private final int mTaskbarNavThresholdY;
private final int mTaskbarAppWindowThresholdY;
private final boolean mTaskbarAlreadyOpen;
private final boolean mIsTaskbarAllAppsOpen;
private boolean mHasPassedTaskbarNavThreshold;
private boolean mHasPassedTaskbarAppWindowThreshold;
@@ -88,6 +89,8 @@ public class TaskbarStashInputConsumer extends DelegateInputConsumer {
mTaskbarAppWindowThresholdY = screenHeight - taskbarAppWindowThreshold;
mTaskbarAlreadyOpen = mTaskbarActivityContext != null
&& !mTaskbarActivityContext.isTaskbarStashed();
mIsTaskbarAllAppsOpen =
mTaskbarActivityContext != null && mTaskbarActivityContext.isTaskbarAllAppsOpen();
mIsTransientTaskbar = DisplayController.isTransientTaskbar(context);
@@ -184,7 +187,7 @@ public class TaskbarStashInputConsumer extends DelegateInputConsumer {
if (dY < 0) {
dY = -OverScroll.dampedScroll(-dY, mTaskbarNavThresholdY);
if (mTransitionCallback != null) {
if (mTransitionCallback != null && !mIsTaskbarAllAppsOpen) {
mTransitionCallback.onActionMove(dY);
}
}
@@ -63,13 +63,13 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(558)
assertThat(dp.numShownHotseatIcons).isEqualTo(4)
assertThat(dp.hotseatBorderSpace).isEqualTo(76)
assertThat(dp.hotseatBorderSpace).isEqualTo(50)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(122)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(112)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(558)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1058)
assertThat(dp.hotseatQsbWidth).isEqualTo(1080)
}
/**
@@ -84,13 +84,13 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(744)
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(83)
assertThat(dp.hotseatBorderSpace).isEqualTo(82)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(106)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(744)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1467)
assertThat(dp.hotseatQsbWidth).isEqualTo(1468)
}
/**
@@ -109,13 +109,13 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(705)
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(108)
assertThat(dp.hotseatBorderSpace).isEqualTo(102)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(631)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(625)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(705)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1227)
assertThat(dp.hotseatQsbWidth).isEqualTo(1233)
}
/**
@@ -132,11 +132,11 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(36)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(884)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(854)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(705)
assertThat(dp.isQsbInline).isTrue()
assertThat(dp.hotseatQsbWidth).isEqualTo(559)
assertThat(dp.hotseatQsbWidth).isEqualTo(531)
}
/**
@@ -152,9 +152,9 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(705)
assertThat(dp.numShownHotseatIcons).isEqualTo(5)
assertThat(dp.hotseatBorderSpace).isEqualTo(56)
assertThat(dp.hotseatBorderSpace).isEqualTo(43)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(801)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(782)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(705)
assertThat(dp.isQsbInline).isTrue()
+29 -20
View File
@@ -15,32 +15,41 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="80dp"
android:height="80dp"
android:viewportWidth="80"
android:viewportHeight="80">
android:width="29dp"
android:height="28dp"
android:viewportWidth="29"
android:viewportHeight="28">
<group
android:pivotY="40"
android:pivotX="40"
android:scaleX=".88"
android:scaleY=".88">
android:pivotY="14.5"
android:pivotX="22"
android:scaleX=".50"
android:scaleY=".50">
<path
android:pathData="M26.8,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
android:fillColor="@color/all_apps_button_color_1"/>
android:pathData="M4 7C3.0375 7 2.215 6.65 1.5325 5.9675C0.85 5.285 0.5 4.4625 0.5 3.5C0.5 2.5375 0.85 1.715 1.5325 1.0325C2.215 0.35 3.0375 0 4 0C4.9625 0 5.785 0.35 6.4675 1.0325C7.15 1.715 7.5 2.5375 7.5 3.5C7.5 4.4625 7.15 5.285 6.4675 5.9675C5.785 6.65 4.9625 7 4 7Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M26.8,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
android:fillColor="@color/all_apps_button_color_2"/>
android:pathData="M14.5 7C13.5375 7 12.715 6.65 12.0325 5.9675C11.35 5.285 11 4.4625 11 3.5C11 2.5375 11.35 1.715 12.0325 1.0325C12.715 0.35 13.5375 0 14.5 0C15.4625 0 16.285 0.35 16.9675 1.0325C17.65 1.715 18 2.5375 18 3.5C18 4.4625 17.65 5.285 16.9675 5.9675C16.285 6.65 15.4625 7 14.5 7Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M40,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
android:fillColor="@color/all_apps_button_color_3"/>
android:pathData="M25 7C24.0375 7 23.215 6.65 22.5325 5.9675C21.85 5.285 21.5 4.4625 21.5 3.5C21.5 2.5375 21.85 1.715 22.5325 1.0325C23.215 0.35 24.0375 0 25 0C25.9625 0 26.785 0.35 27.4675 1.0325C28.15 1.715 28.5 2.5375 28.5 3.5C28.5 4.4625 28.15 5.285 27.4675 5.9675C26.785 6.65 25.9625 7 25 7Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M40,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
android:fillColor="@color/all_apps_button_color_2"/>
android:pathData="M4 17.5C3.0375 17.5 2.215 17.15 1.5325 16.4675C0.85 15.785 0.5 14.9625 0.5 14C0.5 13.0375 0.85 12.215 1.5325 11.5325C2.215 10.85 3.0375 10.5 4 10.5C4.9625 10.5 5.785 10.85 6.4675 11.5325C7.15 12.215 7.5 13.0375 7.5 14C7.5 14.9625 7.15 15.785 6.4675 16.4675C5.785 17.15 4.9625 17.5 4 17.5Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M53.2,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
android:fillColor="@color/all_apps_button_color_4"/>
android:pathData="M14.5 17.5C13.5375 17.5 12.715 17.15 12.0325 16.4675C11.35 15.785 11 14.9625 11 14C11 13.0375 11.35 12.215 12.0325 11.5325C12.715 10.85 13.5375 10.5 14.5 10.5C15.4625 10.5 16.285 10.85 16.9675 11.5325C17.65 12.215 18 13.0375 18 14C18 14.9625 17.65 15.785 16.9675 16.4675C16.285 17.15 15.4625 17.5 14.5 17.5Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M53.2,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
android:fillColor="@color/all_apps_button_color_2"/>
android:pathData="M25 17.5C24.0375 17.5 23.215 17.15 22.5325 16.4675C21.85 15.785 21.5 14.9625 21.5 14C21.5 13.0375 21.85 12.215 22.5325 11.5325C23.215 10.85 24.0375 10.5 25 10.5C25.9625 10.5 26.785 10.85 27.4675 11.5325C28.15 12.215 28.5 13.0375 28.5 14C28.5 14.9625 28.15 15.785 27.4675 16.4675C26.785 17.15 25.9625 17.5 25 17.5Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M4 28C3.0375 28 2.215 27.65 1.5325 26.9675C0.85 26.285 0.5 25.4625 0.5 24.5C0.5 23.5375 0.85 22.715 1.5325 22.0325C2.215 21.35 3.0375 21 4 21C4.9625 21 5.785 21.35 6.4675 22.0325C7.15 22.715 7.5 23.5375 7.5 24.5C7.5 25.4625 7.15 26.285 6.4675 26.9675C5.785 27.65 4.9625 28 4 28Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M14.5 28C13.5375 28 12.715 27.65 12.0325 26.9675C11.35 26.285 11 25.4625 11 24.5C11 23.5375 11.35 22.715 12.0325 22.0325C12.715 21.35 13.5375 21 14.5 21C15.4625 21 16.285 21.35 16.9675 22.0325C17.65 22.715 18 23.5375 18 24.5C18 25.4625 17.65 26.285 16.9675 26.9675C16.285 27.65 15.4625 28 14.5 28Z"
android:fillColor="@color/all_apps_button_color"/>
<path
android:pathData="M25 28C24.0375 28 23.215 27.65 22.5325 26.9675C21.85 26.285 21.5 25.4625 21.5 24.5C21.5 23.5375 21.85 22.715 22.5325 22.0325C23.215 21.35 24.0375 21 25 21C25.9625 21 26.785 21.35 27.4675 22.0325C28.15 22.715 28.5 23.5375 28.5 24.5C28.5 25.4625 28.15 26.285 27.4675 26.9675C26.785 27.65 25.9625 28 25 28Z"
android:fillColor="@color/all_apps_button_color"/>
</group>
</vector>
+1 -4
View File
@@ -25,8 +25,5 @@
<color name="home_settings_track_on_color">@android:color/system_accent2_700</color>
<color name="home_settings_track_off_color">@android:color/system_neutral1_700</color>
<color name="all_apps_button_bg_color">@android:color/system_neutral1_800</color>
<color name="all_apps_button_color_1">@android:color/system_accent1_300</color>
<color name="all_apps_button_color_3">@android:color/system_accent1_100</color>
<color name="all_apps_button_color_4">@android:color/system_accent2_100</color>
<color name="all_apps_button_color">?android:attr/textColorSecondary</color>
</resources>
+1 -5
View File
@@ -17,9 +17,5 @@
-->
<resources>
<color name="all_apps_button_bg_color">#2E3132</color>
<color name="all_apps_button_color_1">#33B9DB</color>
<color name="all_apps_button_color_2">#EFFBFF</color>
<color name="all_apps_button_color_3">#B1EBFF</color>
<color name="all_apps_button_color_4">#DEE0FF</color>
<color name="all_apps_button_color">#BFC8CC</color>
</resources>
+2
View File
@@ -61,4 +61,6 @@
<color name="preload_icon_background_color_light">@android:color/system_accent2_200</color>
<color name="preload_icon_accent_color_dark">@android:color/system_accent1_300</color>
<color name="preload_icon_background_color_dark">@android:color/system_neutral2_700</color>
<color name="all_apps_button_color">?android:attr/textColorSecondary</color>
</resources>
+1 -5
View File
@@ -80,11 +80,7 @@
<color name="workspace_accent_color_light">#ff8df5e3</color>
<color name="workspace_accent_color_dark">#ff3d665f</color>
<color name="all_apps_button_bg_color">#F7F9FA</color>
<color name="all_apps_button_color_1">#00677E</color>
<color name="all_apps_button_color_2">#00677E</color>
<color name="all_apps_button_color_3">#5F757E</color>
<color name="all_apps_button_color_4">#005A6E</color>
<color name="all_apps_button_color">#40484B</color>
<color name="preload_icon_accent_color_light">#00668B</color>
<color name="preload_icon_background_color_light">#B5CAD7</color>
+71 -9
View File
@@ -867,8 +867,8 @@ public class DeviceProfile {
float invIconSizeDp = inv.iconSize[mTypeIndex];
float invIconTextSizeSp = inv.iconTextSize[mTypeIndex];
iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, iconScale));
iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * iconScale);
iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics));
iconTextSizePx = pxFromSp(invIconTextSizeSp, mMetrics);
iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * iconScale);
cellLayoutBorderSpacePx = getCellLayoutBorderSpace(inv, scale);
@@ -876,8 +876,46 @@ public class DeviceProfile {
if (isScalableGrid) {
cellWidthPx = pxFromDp(inv.minCellSize[mTypeIndex].x, mMetrics, scale);
cellHeightPx = pxFromDp(inv.minCellSize[mTypeIndex].y, mMetrics, scale);
int cellContentHeight = iconSizePx + iconDrawablePaddingPx
+ Utilities.calculateTextHeight(iconTextSizePx);
if (cellWidthPx < iconSizePx) {
// If cellWidth no longer fit iconSize, reduce borderSpace to make cellWidth bigger.
int numColumns = getPanelCount() * inv.numColumns;
int numBorders = numColumns - 1;
int extraWidthRequired = (iconSizePx - cellWidthPx) * numColumns;
if (cellLayoutBorderSpacePx.x * numBorders >= extraWidthRequired) {
cellWidthPx = iconSizePx;
cellLayoutBorderSpacePx.x -= extraWidthRequired / numBorders;
} else {
// If it still doesn't fit, set borderSpace to 0 and distribute the space for
// cellWidth, and reduce iconSize.
cellWidthPx = (cellWidthPx * numColumns
+ cellLayoutBorderSpacePx.x * numBorders) / numColumns;
iconSizePx = Math.min(iconSizePx, cellWidthPx);
cellLayoutBorderSpacePx.x = 0;
}
}
int cellTextAndPaddingHeight =
iconDrawablePaddingPx + Utilities.calculateTextHeight(iconTextSizePx);
int cellContentHeight = iconSizePx + cellTextAndPaddingHeight;
if (cellHeightPx < cellContentHeight) {
// If cellHeight no longer fit iconSize, reduce borderSpace to make cellHeight
// bigger.
int numBorders = inv.numRows - 1;
int extraHeightRequired = (cellContentHeight - cellHeightPx) * inv.numRows;
if (cellLayoutBorderSpacePx.y * numBorders >= extraHeightRequired) {
cellHeightPx = cellContentHeight;
cellLayoutBorderSpacePx.y -= extraHeightRequired / numBorders;
} else {
// If it still doesn't fit, set borderSpace to 0 and distribute the space for
// cellHeight, and reduce iconSize.
cellHeightPx = (cellHeightPx * inv.numRows
+ cellLayoutBorderSpacePx.y * numBorders) / inv.numRows;
iconSizePx = Math.min(iconSizePx, cellHeightPx - cellTextAndPaddingHeight);
cellLayoutBorderSpacePx.y = 0;
}
cellContentHeight = iconSizePx + cellTextAndPaddingHeight;
}
cellYPaddingPx = Math.max(0, cellHeightPx - cellContentHeight) / 2;
desiredWorkspaceHorizontalMarginPx =
(int) (desiredWorkspaceHorizontalMarginOriginalPx * scale);
@@ -929,17 +967,41 @@ public class DeviceProfile {
pxFromDp(inv.allAppsBorderSpaces[mTypeIndex].y, mMetrics, scale));
// AllApps cells don't have real space between cells,
// so we add the border space to the cell height
allAppsCellHeightPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].y, mMetrics, scale)
allAppsCellHeightPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].y, mMetrics)
+ allAppsBorderSpacePx.y;
// but width is just the cell,
// the border is added in #updateAllAppsContainerWidth
if (isScalableGrid) {
allAppsIconSizePx =
pxFromDp(inv.allAppsIconSize[mTypeIndex], mMetrics, scale);
allAppsIconTextSizePx =
pxFromSp(inv.allAppsIconTextSize[mTypeIndex], mMetrics, scale);
allAppsIconSizePx = pxFromDp(inv.allAppsIconSize[mTypeIndex], mMetrics);
allAppsIconTextSizePx = pxFromSp(inv.allAppsIconTextSize[mTypeIndex], mMetrics);
allAppsIconDrawablePaddingPx = iconDrawablePaddingOriginalPx;
allAppsCellWidthPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].x, mMetrics, scale);
if (allAppsCellWidthPx < allAppsIconSizePx) {
// If allAppsCellWidth no longer fit allAppsIconSize, reduce allAppsBorderSpace to
// make allAppsCellWidth bigger.
int numBorders = inv.numAllAppsColumns - 1;
int extraWidthRequired =
(allAppsIconSizePx - allAppsCellWidthPx) * inv.numAllAppsColumns;
if (allAppsBorderSpacePx.x * numBorders >= extraWidthRequired) {
allAppsCellWidthPx = allAppsIconSizePx;
allAppsBorderSpacePx.x -= extraWidthRequired / numBorders;
} else {
// If it still doesn't fit, set allAppsBorderSpace to 0 and distribute the space
// for allAppsCellWidth, and reduce allAppsIconSize.
allAppsCellWidthPx = (allAppsCellWidthPx * inv.numAllAppsColumns
+ allAppsBorderSpacePx.x * numBorders) / inv.numAllAppsColumns;
allAppsIconSizePx = Math.min(allAppsIconSizePx, allAppsCellWidthPx);
allAppsBorderSpacePx.x = 0;
}
}
int cellContentHeight = allAppsIconSizePx
+ Utilities.calculateTextHeight(allAppsIconTextSizePx) + allAppsBorderSpacePx.y;
if (allAppsCellHeightPx < cellContentHeight) {
// Increase allAppsCellHeight to fit its content.
allAppsCellHeightPx = cellContentHeight;
}
} else {
float invIconSizeDp = inv.allAppsIconSize[mTypeIndex];
float invIconTextSizeSp = inv.allAppsIconTextSize[mTypeIndex];
@@ -159,4 +159,14 @@ public class ExtendedEditText extends EditText {
listener.onFocusChange(this, focused);
}
}
/**
* Save the input, suggestion, hint states when it's on focus, and set to unfocused states.
*/
public void saveFocusedStateAndUpdateToUnfocusedState() {}
/**
* Restore to the previous saved focused state.
*/
public void restoreToFocusedState() {}
}
@@ -41,12 +41,23 @@ public class LauncherAllAppsContainerView extends ActivityAllAppsContainerView<L
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
int scrolledOffset = recyclerView.computeVerticalScrollOffset();
ExtendedEditText input = mSearchUiManager.getEditText();
// Scroll up and scroll to top
if (dy < 0 && scrolledOffset == 0 && input != null) {
boolean isImeEnabledOnSwipeUp = Launcher.getLauncher(mActivityContext)
.getSearchConfig().isImeEnabledOnSwipeUp();
if (isImeEnabledOnSwipeUp || !TextUtils.isEmpty(input.getText())) {
input.showKeyboard();
if (input != null) {
// Save the input box state on scroll down
if (dy > 0) {
input.saveFocusedStateAndUpdateToUnfocusedState();
}
// Scroll up and scroll to top
if (dy < 0 && scrolledOffset == 0) {
// Show keyboard
boolean isImeEnabledOnSwipeUp = Launcher.getLauncher(mActivityContext)
.getSearchConfig().isImeEnabledOnSwipeUp();
if (isImeEnabledOnSwipeUp || !TextUtils.isEmpty(input.getText())) {
input.showKeyboard();
}
// Restore state in input box
input.restoreToFocusedState();
}
}
}
@@ -63,13 +63,13 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(94)
assertThat(dp.hotseatBorderSpace).isEqualTo(72)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(121)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(121)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(110)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(110)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1058)
assertThat(dp.hotseatQsbWidth).isEqualTo(1080)
}
/**
@@ -84,13 +84,13 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(105)
assertThat(dp.hotseatBorderSpace).isEqualTo(104)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(370)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(370)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1467)
assertThat(dp.hotseatQsbWidth).isEqualTo(1468)
}
/**
@@ -130,13 +130,13 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(96)
assertThat(dp.hotseatBorderSpace).isEqualTo(91)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(643)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(643)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(640)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(640)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1174)
assertThat(dp.hotseatQsbWidth).isEqualTo(1179)
}
/**
@@ -152,12 +152,12 @@ class HotseatWidthCalculationTest : DeviceProfileBaseTest() {
assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
assertThat(dp.numShownHotseatIcons).isEqualTo(6)
assertThat(dp.hotseatBorderSpace).isEqualTo(89)
assertThat(dp.hotseatBorderSpace).isEqualTo(75)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(589)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(589)
assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(582)
assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(582)
assertThat(dp.isQsbInline).isFalse()
assertThat(dp.hotseatQsbWidth).isEqualTo(1081)
assertThat(dp.hotseatQsbWidth).isEqualTo(1095)
}
}