Update bubble bar to match visual spec
Made bubble bar icon size adjustable and listen to the task bar icon size changes. Additionally fixes an issue where the pointer arrow could be misplaced. Test: BubbleBarViewAnimatorTest.kt Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT Bug: 295027436 Fixes: 334781761 Change-Id: Ie4ceee84cc00baa0186a3d5b431080c8495c7285
This commit is contained in:
@@ -18,9 +18,12 @@ package com.android.launcher3.taskbar.bubbles;
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@@ -52,12 +55,13 @@ import java.util.function.Consumer;
|
||||
public class BubbleBarViewController {
|
||||
|
||||
private static final String TAG = BubbleBarViewController.class.getSimpleName();
|
||||
|
||||
private static final float APP_ICON_SMALL_DP = 44f;
|
||||
private static final float APP_ICON_MEDIUM_DP = 48f;
|
||||
private static final float APP_ICON_LARGE_DP = 52f;
|
||||
private final SystemUiProxy mSystemUiProxy;
|
||||
private final TaskbarActivityContext mActivity;
|
||||
private final BubbleBarView mBarView;
|
||||
private final int mIconSize;
|
||||
private final int mPointerSize;
|
||||
private int mIconSize;
|
||||
|
||||
// Initialized in init.
|
||||
private BubbleStashController mBubbleStashController;
|
||||
@@ -96,9 +100,8 @@ public class BubbleBarViewController {
|
||||
mSystemUiProxy = SystemUiProxy.INSTANCE.get(mActivity);
|
||||
mBubbleBarAlpha = new MultiValueAlpha(mBarView, 1 /* num alpha channels */);
|
||||
mBubbleBarAlpha.setUpdateVisibility(true);
|
||||
mIconSize = activity.getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size);
|
||||
mPointerSize = activity.getResources().getDimensionPixelSize(
|
||||
R.dimen.bubblebar_pointer_size);
|
||||
mIconSize = activity.getResources().getDimensionPixelSize(
|
||||
R.dimen.bubblebar_icon_size);
|
||||
}
|
||||
|
||||
public void init(TaskbarControllers controllers, BubbleControllers bubbleControllers) {
|
||||
@@ -108,12 +111,8 @@ public class BubbleBarViewController {
|
||||
mTaskbarStashController = controllers.taskbarStashController;
|
||||
mTaskbarInsetsController = controllers.taskbarInsetsController;
|
||||
|
||||
mActivity.addOnDeviceProfileChangeListener(dp ->
|
||||
mBarView.getLayoutParams().height =
|
||||
mActivity.getDeviceProfile().taskbarHeight + mPointerSize
|
||||
);
|
||||
mBarView.getLayoutParams().height =
|
||||
mActivity.getDeviceProfile().taskbarHeight + mPointerSize;
|
||||
mActivity.addOnDeviceProfileChangeListener(dp -> setBubbleBarIconSize(dp.taskbarIconSize));
|
||||
setBubbleBarIconSize(mActivity.getDeviceProfile().taskbarIconSize);
|
||||
mBubbleBarScale.updateValue(1f);
|
||||
mBubbleClickListener = v -> onBubbleClicked(v);
|
||||
mBubbleBarClickListener = v -> onBubbleBarClicked();
|
||||
@@ -260,6 +259,33 @@ public class BubbleBarViewController {
|
||||
}
|
||||
}
|
||||
|
||||
private void setBubbleBarIconSize(int newIconSize) {
|
||||
if (newIconSize == mIconSize) {
|
||||
return;
|
||||
}
|
||||
Resources res = mActivity.getResources();
|
||||
DisplayMetrics dm = res.getDisplayMetrics();
|
||||
float smallIconSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
|
||||
APP_ICON_SMALL_DP, dm);
|
||||
float mediumIconSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
|
||||
APP_ICON_MEDIUM_DP, dm);
|
||||
float largeIconSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
|
||||
APP_ICON_LARGE_DP, dm);
|
||||
float smallMediumThreshold = (smallIconSize + mediumIconSize) / 2f;
|
||||
float mediumLargeThreshold = (mediumIconSize + largeIconSize) / 2f;
|
||||
mIconSize = newIconSize <= smallMediumThreshold
|
||||
? res.getDimensionPixelSize(R.dimen.bubblebar_icon_size_small) :
|
||||
res.getDimensionPixelSize(R.dimen.bubblebar_icon_size);
|
||||
float bubbleBarPadding = newIconSize >= mediumLargeThreshold
|
||||
? res.getDimensionPixelSize(R.dimen.bubblebar_icon_spacing_large) :
|
||||
res.getDimensionPixelSize(R.dimen.bubblebar_icon_spacing);
|
||||
|
||||
mBarView.setIconSizeAndPadding(mIconSize, bubbleBarPadding);
|
||||
mBarView.setPadding((int) bubbleBarPadding, mBarView.getPaddingTop(),
|
||||
(int) bubbleBarPadding,
|
||||
mBarView.getPaddingBottom());
|
||||
}
|
||||
|
||||
/** Sets a callback that updates the selected bubble after the bubble bar collapses. */
|
||||
public void setUpdateSelectedBubbleAfterCollapse(
|
||||
Consumer<String> updateSelectedBubbleAfterCollapse) {
|
||||
|
||||
Reference in New Issue
Block a user