Loading quickstep/res/values/dimens.xml +2 −0 Original line number Diff line number Diff line Loading @@ -449,11 +449,13 @@ <dimen name="bubblebar_icon_size_small">32dp</dimen> <dimen name="bubblebar_icon_size">36dp</dimen> <dimen name="bubblebar_icon_size_persistent_taskbar">28dp</dimen> <dimen name="bubblebar_badge_size">24dp</dimen> <dimen name="bubblebar_icon_overlap">12dp</dimen> <dimen name="bubblebar_overflow_inset">16dp</dimen> <dimen name="bubblebar_icon_spacing">6dp</dimen> <dimen name="bubblebar_icon_spacing_large">8dp</dimen> <dimen name="bubblebar_icon_spacing_persistent_taskbar">@dimen/bubblebar_icon_spacing</dimen> <dimen name="bubblebar_expanded_icon_spacing">12dp</dimen> <dimen name="bubblebar_icon_elevation">1dp</dimen> Loading quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java +45 −11 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.taskbar.TaskbarActivityContext; Loading Loading @@ -62,6 +63,7 @@ public class BubbleBarViewController { private final TaskbarActivityContext mActivity; private final BubbleBarView mBarView; private int mIconSize; private int mBubbleBarPadding; // Initialized in init. private BubbleStashController mBubbleStashController; Loading Loading @@ -110,10 +112,9 @@ public class BubbleBarViewController { mTaskbarStashController = controllers.taskbarStashController; mTaskbarInsetsController = controllers.taskbarInsetsController; mBubbleBarViewAnimator = new BubbleBarViewAnimator(mBarView, mBubbleStashController); onBubbleBarConfigurationChanged(/* animate= */ false); mActivity.addOnDeviceProfileChangeListener( dp -> updateBubbleBarIconSize(dp.taskbarIconSize, /* animate= */ true)); updateBubbleBarIconSize(mActivity.getDeviceProfile().taskbarIconSize, /* animate= */ false); dp -> onBubbleBarConfigurationChanged(/* animate= */ true)); mBubbleBarScale.updateValue(1f); mBubbleClickListener = v -> onBubbleClicked((BubbleView) v); mBubbleBarClickListener = v -> onBubbleBarClicked(); Loading Loading @@ -335,27 +336,60 @@ public class BubbleBarViewController { // Modifying view related properties. // private void updateBubbleBarIconSize(int newIconSize, boolean animate) { /** Notifies controller of configuration change, so bubble bar can be adjusted */ public void onBubbleBarConfigurationChanged(boolean animate) { int newIconSize; int newPadding; Resources res = mActivity.getResources(); if (mBubbleStashController.isBubblesShowingOnHome()) { newIconSize = getBubbleBarIconSizeFromDeviceProfile(res); newPadding = getBubbleBarPaddingFromDeviceProfile(res); } else { // the bubble bar is shown inside the persistent task bar, use preset sizes newIconSize = res.getDimensionPixelSize(R.dimen.bubblebar_icon_size_persistent_taskbar); newPadding = res.getDimensionPixelSize( R.dimen.bubblebar_icon_spacing_persistent_taskbar); } updateBubbleBarIconSizeAndPadding(newIconSize, newPadding, animate); } private int getBubbleBarIconSizeFromDeviceProfile(Resources res) { DeviceProfile deviceProfile = mActivity.getDeviceProfile(); 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 int taskbarIconSize = deviceProfile.taskbarIconSize; return taskbarIconSize <= smallMediumThreshold ? res.getDimensionPixelSize(R.dimen.bubblebar_icon_size_small) : res.getDimensionPixelSize(R.dimen.bubblebar_icon_size); float bubbleBarPadding = newIconSize >= mediumLargeThreshold } private int getBubbleBarPaddingFromDeviceProfile(Resources res) { DeviceProfile deviceProfile = mActivity.getDeviceProfile(); DisplayMetrics dm = res.getDisplayMetrics(); 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 mediumLargeThreshold = (mediumIconSize + largeIconSize) / 2f; return deviceProfile.taskbarIconSize >= mediumLargeThreshold ? res.getDimensionPixelSize(R.dimen.bubblebar_icon_spacing_large) : res.getDimensionPixelSize(R.dimen.bubblebar_icon_spacing); } private void updateBubbleBarIconSizeAndPadding(int iconSize, int padding, boolean animate) { if (mIconSize == iconSize && mBubbleBarPadding == padding) return; mIconSize = iconSize; mBubbleBarPadding = padding; if (animate) { mBarView.animateBubbleBarIconSize(mIconSize, bubbleBarPadding); mBarView.animateBubbleBarIconSize(iconSize, padding); } else { mBarView.setIconSizeAndPadding(mIconSize, bubbleBarPadding); mBarView.setIconSizeAndPadding(iconSize, padding); } } Loading Loading
quickstep/res/values/dimens.xml +2 −0 Original line number Diff line number Diff line Loading @@ -449,11 +449,13 @@ <dimen name="bubblebar_icon_size_small">32dp</dimen> <dimen name="bubblebar_icon_size">36dp</dimen> <dimen name="bubblebar_icon_size_persistent_taskbar">28dp</dimen> <dimen name="bubblebar_badge_size">24dp</dimen> <dimen name="bubblebar_icon_overlap">12dp</dimen> <dimen name="bubblebar_overflow_inset">16dp</dimen> <dimen name="bubblebar_icon_spacing">6dp</dimen> <dimen name="bubblebar_icon_spacing_large">8dp</dimen> <dimen name="bubblebar_icon_spacing_persistent_taskbar">@dimen/bubblebar_icon_spacing</dimen> <dimen name="bubblebar_expanded_icon_spacing">12dp</dimen> <dimen name="bubblebar_icon_elevation">1dp</dimen> Loading
quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java +45 −11 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.taskbar.TaskbarActivityContext; Loading Loading @@ -62,6 +63,7 @@ public class BubbleBarViewController { private final TaskbarActivityContext mActivity; private final BubbleBarView mBarView; private int mIconSize; private int mBubbleBarPadding; // Initialized in init. private BubbleStashController mBubbleStashController; Loading Loading @@ -110,10 +112,9 @@ public class BubbleBarViewController { mTaskbarStashController = controllers.taskbarStashController; mTaskbarInsetsController = controllers.taskbarInsetsController; mBubbleBarViewAnimator = new BubbleBarViewAnimator(mBarView, mBubbleStashController); onBubbleBarConfigurationChanged(/* animate= */ false); mActivity.addOnDeviceProfileChangeListener( dp -> updateBubbleBarIconSize(dp.taskbarIconSize, /* animate= */ true)); updateBubbleBarIconSize(mActivity.getDeviceProfile().taskbarIconSize, /* animate= */ false); dp -> onBubbleBarConfigurationChanged(/* animate= */ true)); mBubbleBarScale.updateValue(1f); mBubbleClickListener = v -> onBubbleClicked((BubbleView) v); mBubbleBarClickListener = v -> onBubbleBarClicked(); Loading Loading @@ -335,27 +336,60 @@ public class BubbleBarViewController { // Modifying view related properties. // private void updateBubbleBarIconSize(int newIconSize, boolean animate) { /** Notifies controller of configuration change, so bubble bar can be adjusted */ public void onBubbleBarConfigurationChanged(boolean animate) { int newIconSize; int newPadding; Resources res = mActivity.getResources(); if (mBubbleStashController.isBubblesShowingOnHome()) { newIconSize = getBubbleBarIconSizeFromDeviceProfile(res); newPadding = getBubbleBarPaddingFromDeviceProfile(res); } else { // the bubble bar is shown inside the persistent task bar, use preset sizes newIconSize = res.getDimensionPixelSize(R.dimen.bubblebar_icon_size_persistent_taskbar); newPadding = res.getDimensionPixelSize( R.dimen.bubblebar_icon_spacing_persistent_taskbar); } updateBubbleBarIconSizeAndPadding(newIconSize, newPadding, animate); } private int getBubbleBarIconSizeFromDeviceProfile(Resources res) { DeviceProfile deviceProfile = mActivity.getDeviceProfile(); 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 int taskbarIconSize = deviceProfile.taskbarIconSize; return taskbarIconSize <= smallMediumThreshold ? res.getDimensionPixelSize(R.dimen.bubblebar_icon_size_small) : res.getDimensionPixelSize(R.dimen.bubblebar_icon_size); float bubbleBarPadding = newIconSize >= mediumLargeThreshold } private int getBubbleBarPaddingFromDeviceProfile(Resources res) { DeviceProfile deviceProfile = mActivity.getDeviceProfile(); DisplayMetrics dm = res.getDisplayMetrics(); 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 mediumLargeThreshold = (mediumIconSize + largeIconSize) / 2f; return deviceProfile.taskbarIconSize >= mediumLargeThreshold ? res.getDimensionPixelSize(R.dimen.bubblebar_icon_spacing_large) : res.getDimensionPixelSize(R.dimen.bubblebar_icon_spacing); } private void updateBubbleBarIconSizeAndPadding(int iconSize, int padding, boolean animate) { if (mIconSize == iconSize && mBubbleBarPadding == padding) return; mIconSize = iconSize; mBubbleBarPadding = padding; if (animate) { mBarView.animateBubbleBarIconSize(mIconSize, bubbleBarPadding); mBarView.animateBubbleBarIconSize(iconSize, padding); } else { mBarView.setIconSizeAndPadding(mIconSize, bubbleBarPadding); mBarView.setIconSizeAndPadding(iconSize, padding); } } Loading