Change TaskIconMenu to lay out vertically
Still lays out horizontally when in phone landscape. TODO(b/186583656), need to center view. Also have all layout be dynamic instead of having some cases be in XML and some in code. Bug: 181704764 Test: Task menu visible with all options in portrait/landscape tablet portrait phone fake/real landscape phone Change-Id: I3632eeb174f3e4baf2c9d69d51c1815c3c512e59
This commit is contained in:
@@ -65,6 +65,7 @@ import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.core.os.BuildCompat;
|
||||
@@ -752,6 +753,16 @@ public final class Utilities {
|
||||
ColorUtils.blendARGB(0, color, tintAmount));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets start margin on the provided {@param view} to be {@param margin}.
|
||||
* Assumes {@param view} is a child of {@link LinearLayout}
|
||||
*/
|
||||
public static void setStartMarginForView(View view, int margin) {
|
||||
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) view.getLayoutParams();
|
||||
lp.setMarginStart(margin);
|
||||
view.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
private static class FixedSizeEmptyDrawable extends ColorDrawable {
|
||||
|
||||
private final int mSize;
|
||||
|
||||
@@ -254,16 +254,21 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTaskMenuLayoutOrientation(boolean canRecentsActivityRotate,
|
||||
public void setTaskMenuLayoutOrientation(DeviceProfile deviceProfile,
|
||||
LinearLayout taskMenuLayout) {
|
||||
return LinearLayout.HORIZONTAL;
|
||||
taskMenuLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp) {
|
||||
public void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp,
|
||||
LinearLayout viewGroup, DeviceProfile deviceProfile) {
|
||||
// Phone fake landscape
|
||||
viewGroup.setOrientation(LinearLayout.VERTICAL);
|
||||
lp.width = 0;
|
||||
lp.height = WRAP_CONTENT;
|
||||
lp.weight = 1;
|
||||
Utilities.setStartMarginForView(viewGroup.findViewById(R.id.text), 0);
|
||||
Utilities.setStartMarginForView(viewGroup.findViewById(R.id.icon), 0);
|
||||
}
|
||||
|
||||
/* ---------- The following are only used by TaskViewTouchHandler. ---------- */
|
||||
|
||||
@@ -101,8 +101,9 @@ public interface PagedOrientationHandler {
|
||||
float getTaskMenuX(float x, View thumbnailView, int overScroll);
|
||||
float getTaskMenuY(float y, View thumbnailView, int overScroll);
|
||||
int getTaskMenuWidth(View view);
|
||||
int getTaskMenuLayoutOrientation(boolean canRecentsActivityRotate, LinearLayout taskMenuLayout);
|
||||
void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp);
|
||||
void setTaskMenuLayoutOrientation(DeviceProfile deviceProfile, LinearLayout taskMenuLayout);
|
||||
void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp,
|
||||
LinearLayout viewGroup, DeviceProfile deviceProfile);
|
||||
int getDistanceToBottomOfRect(DeviceProfile dp, Rect rect);
|
||||
List<SplitPositionOption> getSplitPositionOptions(DeviceProfile dp);
|
||||
FloatProperty getSplitSelectTaskOffset(FloatProperty primary, FloatProperty secondary,
|
||||
|
||||
@@ -253,14 +253,34 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTaskMenuLayoutOrientation(boolean canRecentsActivityRotate,
|
||||
public void setTaskMenuLayoutOrientation(DeviceProfile deviceProfile,
|
||||
LinearLayout taskMenuLayout) {
|
||||
return canRecentsActivityRotate ? taskMenuLayout.getOrientation() : LinearLayout.VERTICAL;
|
||||
if (deviceProfile.isLandscape && !deviceProfile.isTablet) {
|
||||
// Phone landscape
|
||||
taskMenuLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||
} else {
|
||||
// Phone Portrait, LargeScreen Landscape/Portrait
|
||||
taskMenuLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp) {
|
||||
// no-op, defaults are fine
|
||||
public void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp,
|
||||
LinearLayout viewGroup, DeviceProfile deviceProfile) {
|
||||
if (deviceProfile.isLandscape && !deviceProfile.isTablet) {
|
||||
// Phone landscape
|
||||
viewGroup.setOrientation(LinearLayout.VERTICAL);
|
||||
lp.width = 0;
|
||||
lp.weight = 1;
|
||||
Utilities.setStartMarginForView(viewGroup.findViewById(R.id.text), 0);
|
||||
Utilities.setStartMarginForView(viewGroup.findViewById(R.id.icon), 0);
|
||||
} else {
|
||||
// Phone Portrait, LargeScreen Landscape/Portrait
|
||||
viewGroup.setOrientation(LinearLayout.HORIZONTAL);
|
||||
lp.width = LinearLayout.LayoutParams.WRAP_CONTENT;
|
||||
}
|
||||
|
||||
lp.height = LinearLayout.LayoutParams.WRAP_CONTENT;
|
||||
}
|
||||
|
||||
/* ---------- The following are only used by TaskViewTouchHandler. ---------- */
|
||||
|
||||
Reference in New Issue
Block a user