Set the correct size to the container of icon view

Wrong container size causes some icon to be cropped. Set the icon size specified by spec as the container size to correct it.

Bug: 228928242
Bug: 229954549
Test: Manual resize the split and check the icon on both phone and large
      screen device.
      Manual drag to split and check the icon on both phone and large
      screen device.
Change-Id: I556f2c1a44852439242a16a6216121036b8aed5e
This commit is contained in:
Chilun Huang
2022-04-21 21:42:21 +08:00
parent 9f46a6ec82
commit 1620411503
4 changed files with 12 additions and 8 deletions

View File

@@ -20,8 +20,8 @@
android:layout_width="match_parent">
<ImageView android:id="@+id/split_resizing_icon"
android:layout_height="@*android:dimen/starting_surface_icon_size"
android:layout_width="@*android:dimen/starting_surface_icon_size"
android:layout_height="@dimen/split_icon_size"
android:layout_width="@dimen/split_icon_size"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:padding="0dp"

View File

@@ -87,6 +87,8 @@
<!-- How high we lift the divider when touching -->
<dimen name="docked_stack_divider_lift_elevation">4dp</dimen>
<!-- Icon size for split screen -->
<dimen name="split_icon_size">72dp</dimen>
<!-- Divider handle size for legacy split screen -->
<dimen name="docked_divider_handle_width">16dp</dimen>
<dimen name="docked_divider_handle_height">2dp</dimen>

View File

@@ -73,6 +73,8 @@ public class SplitDecorManager extends WindowlessWindowManager {
private Rect mBounds = new Rect();
private ValueAnimator mFadeAnimator;
private int mIconSize;
public SplitDecorManager(Configuration configuration, IconProvider iconProvider,
SurfaceSession surfaceSession) {
super(configuration, null /* rootSurface */, null /* hostInputToken */);
@@ -104,6 +106,7 @@ public class SplitDecorManager extends WindowlessWindowManager {
mHostLeash = rootLeash;
mViewHost = new SurfaceControlViewHost(context, context.getDisplay(), this);
mIconSize = context.getResources().getDimensionPixelSize(R.dimen.split_icon_size);
final FrameLayout rootLayout = (FrameLayout) LayoutInflater.from(context)
.inflate(R.layout.split_decor, null);
mResizingIconView = rootLayout.findViewById(R.id.split_resizing_icon);
@@ -171,14 +174,14 @@ public class SplitDecorManager extends WindowlessWindowManager {
WindowManager.LayoutParams lp =
(WindowManager.LayoutParams) mViewHost.getView().getLayoutParams();
lp.width = mIcon.getIntrinsicWidth();
lp.height = mIcon.getIntrinsicHeight();
lp.width = mIconSize;
lp.height = mIconSize;
mViewHost.relayout(lp);
t.setLayer(mIconLeash, Integer.MAX_VALUE);
}
t.setPosition(mIconLeash,
newBounds.width() / 2 - mIcon.getIntrinsicWidth() / 2,
newBounds.height() / 2 - mIcon.getIntrinsicWidth() / 2);
newBounds.width() / 2 - mIconSize / 2,
newBounds.height() / 2 - mIconSize / 2);
boolean show = newBounds.width() > mBounds.width() || newBounds.height() > mBounds.height();
if (show != mShown) {

View File

@@ -111,8 +111,7 @@ public class DropZoneView extends FrameLayout {
mColorDrawable = new ColorDrawable();
setBackgroundDrawable(mColorDrawable);
final int iconSize = context.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.starting_surface_icon_size);
final int iconSize = context.getResources().getDimensionPixelSize(R.dimen.split_icon_size);
mSplashScreenView = new ImageView(context);
mSplashScreenView.setScaleType(ImageView.ScaleType.FIT_CENTER);
addView(mSplashScreenView,