Merge "Hide freeform button from app menu in recents" into tm-qpr-dev
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
index cb1da38..872e64a 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
@@ -188,9 +188,6 @@
AllAppsSwipeController.applyAllAppsToNormalConfig(mActivity, config);
} else if (fromState == NORMAL && toState == ALL_APPS) {
AllAppsSwipeController.applyNormalToAllAppsAnimConfig(mActivity, config);
- } else if (fromState == OVERVIEW && toState == OVERVIEW_SPLIT_SELECT) {
- config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE,
- clampToProgress(LINEAR, 0, 0.167f));
}
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java
index cb08ac8..e79d56b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java
@@ -16,8 +16,6 @@
package com.android.launcher3.uioverrides.states;
-import android.content.Context;
-
import com.android.launcher3.Launcher;
import com.android.quickstep.views.RecentsView;
@@ -26,8 +24,6 @@
* pinned and user is selecting the second one
*/
public class SplitScreenSelectState extends OverviewState {
- private static final int OVERVIEW_SPLIT_SELECT_SLIDE_IN_DURATION = 500;
-
public SplitScreenSelectState(int id) {
super(id);
}
@@ -42,9 +38,4 @@
RecentsView recentsView = launcher.getOverviewPanel();
return recentsView.getSplitSelectTranslation();
}
-
- @Override
- public int getTransitionDuration(Context context, boolean isToState) {
- return OVERVIEW_SPLIT_SELECT_SLIDE_IN_DURATION;
- }
}
diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
index d93f015..7a66ea0 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
@@ -2,9 +2,8 @@
import static com.android.launcher3.AbstractFloatingView.TYPE_TASK_MENU;
import static com.android.launcher3.anim.Interpolators.ACCEL;
-import static com.android.launcher3.anim.Interpolators.FASTER_OUT_SLOWER_IN;
+import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.anim.Interpolators.clampToProgress;
import android.animation.ValueAnimator;
import android.content.Context;
@@ -201,16 +200,10 @@
RectF floatingTaskViewBounds = new RectF();
if (fadeWithThumbnail) {
- // FloatingTaskThumbnailView: thumbnail fades out to transparent
- animation.addFloat(mThumbnailView, LauncherAnimUtils.VIEW_ALPHA,
- 1, 0, clampToProgress(LINEAR, 0, 0.267f));
-
- // SplitPlaceholderView: gray background fades in at the same time, then new icon fades
- // in
animation.addFloat(mSplitPlaceholderView, SplitPlaceholderView.ALPHA_FLOAT,
- 0, 1, clampToProgress(LINEAR, 0, 0.267f));
- animation.addFloat(mSplitPlaceholderView, SplitPlaceholderView.ICON_ALPHA,
- 0, 1, clampToProgress(LINEAR, 0.333f, 0.5f));
+ 0, 1, ACCEL);
+ animation.addFloat(mThumbnailView, LauncherAnimUtils.VIEW_ALPHA,
+ 1, 0, DEACCEL_3);
} else if (isStagedTask) {
// Fade in the placeholder view when split is initiated from homescreen / all apps
// icons.
@@ -221,15 +214,12 @@
}
MultiValueUpdateListener listener = new MultiValueUpdateListener() {
- // SplitPlaceholderView: rectangle translates and stretches to new position
- final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration,
- clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f));
- final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration,
- clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f));
+ final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, LINEAR);
+ final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, LINEAR);
final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, 0,
- animDuration, clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f));
+ animDuration, LINEAR);
final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, 0,
- animDuration, clampToProgress(FASTER_OUT_SLOWER_IN, 0, 0.833f));
+ animDuration, LINEAR);
@Override
public void onUpdate(float percent, boolean initOnly) {
// Calculate the icon position.
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index a153f26..64068ad 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -35,7 +35,6 @@
import static com.android.launcher3.anim.Interpolators.ACCEL_0_75;
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
-import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
import static com.android.launcher3.anim.Interpolators.LINEAR;
@@ -114,7 +113,6 @@
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.core.graphics.ColorUtils;
-import androidx.dynamicanimation.animation.SpringForce;
import com.android.launcher3.BaseActivity;
import com.android.launcher3.BaseActivity.MultiWindowModeChangedListener;
@@ -127,7 +125,6 @@
import com.android.launcher3.anim.AnimatorListeners;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.anim.PendingAnimation;
-import com.android.launcher3.anim.SpringAnimationBuilder;
import com.android.launcher3.anim.SpringProperty;
import com.android.launcher3.compat.AccessibilityManagerCompat;
import com.android.launcher3.config.FeatureFlags;
@@ -445,9 +442,6 @@
private static final float ANIMATION_DISMISS_PROGRESS_MIDPOINT = 0.5f;
private static final float END_DISMISS_TRANSLATION_INTERPOLATION_OFFSET = 0.75f;
- private static final float INITIAL_SPRING_DISMISS_TRANSLATION_INTERPOLATION_OFFSET = 0.133f;
- private static final float ADDITIONAL_SPRING_DISMISS_TRANSLATION_INTERPOLATION_OFFSET = 0.033f;
-
private static final float SIGNIFICANT_MOVE_SCREEN_WIDTH_PERCENTAGE = 0.15f;
protected final RecentsOrientedState mOrientationState;
@@ -2831,20 +2825,7 @@
RectF startingTaskRect = new RectF();
if (mSplitHiddenTaskView != null) {
- // Split staging is initiated, hide the original TaskView except for the icon (which
- // needs to animate out over time)
- // If needed, visibility should be toggled back on in resetFromSplitSelectionState().
- for (int i = 0; i < mSplitHiddenTaskView.getChildCount(); i++) {
- View child = mSplitHiddenTaskView.getChildAt(i);
- if (child != mSplitHiddenTaskView.mIconView) {
- child.setVisibility(INVISIBLE);
- }
- }
-
- // Icon animates out over time
- anim.addFloat(mSplitHiddenTaskView, TaskView.ICON_ALPHA, 1, 0,
- clampToProgress(LINEAR, 0, 0.167f));
-
+ mSplitHiddenTaskView.setVisibility(INVISIBLE);
mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
mSplitHiddenTaskView.getThumbnail(),
mSplitHiddenTaskView.getThumbnail().getThumbnail(),
@@ -2861,15 +2842,9 @@
false /* fadeWithThumbnail */, true /* isStagedTask */);
}
- // SplitInstructionsView: animate in
mSplitInstructionsView = SplitInstructionsView.getSplitInstructionsView(mActivity);
mSplitInstructionsView.setAlpha(0);
- anim.addFloat(mSplitInstructionsView, SplitInstructionsView.CONTAINER_ALPHA, 0, 1,
- clampToProgress(LINEAR, 0, 0.167f));
- anim.addFloat(mSplitInstructionsView, SplitInstructionsView.TEXT_ALPHA, 0, 1,
- clampToProgress(LINEAR, 0.1f, 0.267f));
- anim.addFloat(mSplitInstructionsView, mSplitInstructionsView.UNFOLD, 0.1f, 1,
- clampToProgress(EMPHASIZED_DECELERATE, 0, 0.667f));
+ anim.addFloat(mSplitInstructionsView, SplitInstructionsView.ALPHA_FLOAT, 0, 1, ACCEL);
InteractionJankMonitorWrapper.begin(this,
InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER, "First tile selected");
@@ -3149,22 +3124,11 @@
// Animate task with index >= dismissed index and in the same row as the
// dismissed index or next focused index. Offset successive task dismissal
// durations for a staggered effect.
- distanceFromDismissedTask++;
- // If user is initiating splitscreen from the focused (large) task, we use a
- // spring-based animation and timings. For other, smaller, repositions, we currently
- // fall back on a less complicated linear animation and timings.
- float animationStartProgress = isFocusedTaskDismissed && nextFocusedTaskView == null
- ? Utilities.boundToRange(
- INITIAL_SPRING_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
- + ADDITIONAL_SPRING_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
- * (int) Math.ceil(distanceFromDismissedTask / 2f), 0f,
- dismissTranslationInterpolationEnd)
- : Utilities.boundToRange(
- INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
- + ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
- * distanceFromDismissedTask, 0f,
- dismissTranslationInterpolationEnd);
-
+ float animationStartProgress = Utilities.boundToRange(
+ INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+ + ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+ * ++distanceFromDismissedTask, 0f,
+ dismissTranslationInterpolationEnd);
if (taskView == nextFocusedTaskView) {
// Enlarge the task to be focused next, and translate into focus position.
float scale = mTaskWidth / (float) mLastComputedGridTaskSize.width();
@@ -3199,36 +3163,12 @@
primaryTranslation +=
mIsRtl ? -mSplitPlaceholderSize : mSplitPlaceholderSize;
}
-
- // Transitioning to split select -- set up staggered spring animation for
- // other TaskViews.
- Animator taskSlideIn = new SpringAnimationBuilder(taskView.mActivity)
- .setDampingRatio(0.85f)
- .setStiffness(SpringForce.STIFFNESS_LOW)
- .setEndValue(mIsRtl ? primaryTranslation : -primaryTranslation)
- .setStartValue(
- taskView.getPrimaryDismissTranslationProperty()
- .get(taskView)
- )
- .build(taskView, taskView.getPrimaryDismissTranslationProperty());
- long taskSlideInDuration = taskSlideIn.getDuration();
- anim.add(taskSlideIn);
- taskSlideIn
- .setDuration(taskSlideInDuration)
- .setStartDelay(
- Math.round(animationStartProgress * anim.getDuration()));
- } else {
- // Task was dismissed individually -- translate other TaskViews to fill the
- // vacant space.
-
- // TODO (b/242075836): This dismiss animation uses a linear transition.
- // When the above bug is fixed, it can use the same (nicer) spring
- // transition as the focused task split case above.
- anim.setFloat(taskView, taskView.getPrimaryDismissTranslationProperty(),
- mIsRtl ? primaryTranslation : -primaryTranslation,
- clampToProgress(LINEAR, animationStartProgress,
- dismissTranslationInterpolationEnd));
}
+
+ anim.setFloat(taskView, taskView.getPrimaryDismissTranslationProperty(),
+ mIsRtl ? primaryTranslation : -primaryTranslation,
+ clampToProgress(LINEAR, animationStartProgress,
+ dismissTranslationInterpolationEnd));
}
}
}
@@ -3249,8 +3189,7 @@
final boolean finalCloseGapBetweenClearAll = closeGapBetweenClearAll;
final boolean finalSnapToLastTask = snapToLastTask;
final boolean finalIsFocusedTaskDismissed = isFocusedTaskDismissed;
-
- Consumer endConsumer = new Consumer<Boolean>() {
+ mPendingAnimation.addEndListener(new Consumer<Boolean>() {
@Override
public void accept(Boolean success) {
if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
@@ -3460,9 +3399,7 @@
onDismissAnimationEnds();
mPendingAnimation = null;
}
- };
-
- mPendingAnimation.addListener(AnimatorListeners.forEndCallback(endConsumer));
+ });
return anim;
}
@@ -4283,6 +4220,7 @@
resetTaskVisuals();
mSplitHiddenTaskViewIndex = -1;
if (mSplitHiddenTaskView != null) {
+ mSplitHiddenTaskView.setVisibility(VISIBLE);
mSplitHiddenTaskView = null;
}
}
diff --git a/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java b/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java
index d0d715f..7d94505 100644
--- a/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java
+++ b/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java
@@ -25,7 +25,6 @@
import android.widget.FrameLayout;
import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
@@ -41,10 +40,9 @@
*/
public class SplitInstructionsView extends FrameLayout {
private final StatefulActivity mLauncher;
- private AppCompatTextView mTextView;
- public static final FloatProperty<SplitInstructionsView> CONTAINER_ALPHA =
- new FloatProperty<SplitInstructionsView>("SplitInstructionsContainerAlpha") {
+ public static final FloatProperty<SplitInstructionsView> ALPHA_FLOAT =
+ new FloatProperty<SplitInstructionsView>("SplitInstructionsAlpha") {
@Override
public void setValue(SplitInstructionsView splitInstructionsView, float v) {
splitInstructionsView.setVisibility(v != 0 ? VISIBLE : GONE);
@@ -57,32 +55,6 @@
}
};
- public static final FloatProperty<SplitInstructionsView> UNFOLD =
- new FloatProperty<SplitInstructionsView>("SplitInstructionsUnfold") {
- @Override
- public void setValue(SplitInstructionsView splitInstructionsView, float v) {
- splitInstructionsView.setScaleY(v);
- }
-
- @Override
- public Float get(SplitInstructionsView splitInstructionsView) {
- return splitInstructionsView.getScaleY();
- }
- };
-
- public static final FloatProperty<SplitInstructionsView> TEXT_ALPHA =
- new FloatProperty<SplitInstructionsView>("SplitInstructionsTextAlpha") {
- @Override
- public void setValue(SplitInstructionsView splitInstructionsView, float v) {
- splitInstructionsView.mTextView.setAlpha(v);
- }
-
- @Override
- public Float get(SplitInstructionsView splitInstructionsView) {
- return splitInstructionsView.mTextView.getAlpha();
- }
- };
-
public SplitInstructionsView(Context context) {
this(context, null);
}
@@ -105,9 +77,6 @@
false
);
- splitInstructionsView.mTextView = splitInstructionsView.findViewById(
- R.id.split_instructions_text);
-
dragLayer.addView(splitInstructionsView);
return splitInstructionsView;
}
diff --git a/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java b/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java
index ae6aae1..28080d4 100644
--- a/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java
+++ b/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java
@@ -47,19 +47,6 @@
}
};
- public static final FloatProperty<SplitPlaceholderView> ICON_ALPHA =
- new FloatProperty<SplitPlaceholderView>("SplitViewIconAlpha") {
- @Override
- public void setValue(SplitPlaceholderView splitPlaceholderView, float v) {
- splitPlaceholderView.mIconView.setAlpha(v);
- }
-
- @Override
- public Float get(SplitPlaceholderView splitPlaceholderView) {
- return splitPlaceholderView.mIconView.getAlpha();
- }
- };
-
@Nullable
private IconView mIconView;
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index d2c2988..b089155 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -323,19 +323,6 @@
}
};
- public static final FloatProperty<TaskView> ICON_ALPHA =
- new FloatProperty<TaskView>("iconAlpha") {
- @Override
- public void setValue(TaskView taskView, float v) {
- taskView.mIconView.setAlpha(v);
- }
-
- @Override
- public Float get(TaskView taskView) {
- return taskView.mIconView.getAlpha();
- }
- };
-
@Nullable
protected Task mTask;
protected TaskThumbnailView mSnapshotView;
diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java
index 464b3ed..0a77aa7 100644
--- a/src/com/android/launcher3/anim/Interpolators.java
+++ b/src/com/android/launcher3/anim/Interpolators.java
@@ -50,8 +50,6 @@
public static final Interpolator ACCEL_DEACCEL = new AccelerateDecelerateInterpolator();
public static final Interpolator FAST_OUT_SLOW_IN = new PathInterpolator(0.4f, 0f, 0.2f, 1f);
- public static final Interpolator FASTER_OUT_SLOWER_IN =
- new PathInterpolator(0.3f, 0f, 0.1f, 1f);
public static final Interpolator AGGRESSIVE_EASE = new PathInterpolator(0.2f, 0f, 0f, 1f);
public static final Interpolator AGGRESSIVE_EASE_IN_OUT = new PathInterpolator(0.6f,0, 0.4f, 1);
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index f5683d1..ac52bec 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -169,6 +169,13 @@
"ENABLE_SMARTSPACE_DISMISS", true,
"Adds a menu option to dismiss the current Enhanced Smartspace card.");
+ /**
+ * Enables region sampling for text color: Needs system health assessment before turning on
+ */
+ public static final BooleanFlag ENABLE_REGION_SAMPLING = getDebugFlag(
+ "ENABLE_REGION_SAMPLING", false,
+ "Enable region sampling to determine color of text on screen.");
+
public static final BooleanFlag ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS =
getDebugFlag(
"ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS", false,
diff --git a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
index 2a0fe3a..9ac1c0e 100644
--- a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
+++ b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
@@ -440,7 +440,7 @@
public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
int splitInstructionsWidth, int threeButtonNavShift) {
out.setPivotX(0);
- out.setPivotY(splitInstructionsHeight);
+ out.setPivotY(0);
out.setRotation(getDegreesRotated());
int distanceToEdge = out.getResources().getDimensionPixelSize(
R.dimen.split_instructions_bottom_margin_phone_landscape);
@@ -448,8 +448,8 @@
int insetCorrectionX = dp.getInsets().left;
// Center the view in case of unbalanced insets on top or bottom of screen
int insetCorrectionY = (dp.getInsets().bottom - dp.getInsets().top) / 2;
- out.setTranslationX(distanceToEdge - insetCorrectionX);
- out.setTranslationY(((-splitInstructionsHeight - splitInstructionsWidth) / 2f)
+ out.setTranslationX(splitInstructionsHeight + distanceToEdge - insetCorrectionX);
+ out.setTranslationY(((splitInstructionsHeight - splitInstructionsWidth) / 2f)
+ insetCorrectionY);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams();
// Setting gravity to LEFT instead of the lint-recommended START because we always want this
diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
index f89c0e5..dd9f642 100644
--- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
+++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
@@ -500,7 +500,7 @@
public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
int splitInstructionsWidth, int threeButtonNavShift) {
out.setPivotX(0);
- out.setPivotY(splitInstructionsHeight);
+ out.setPivotY(0);
out.setRotation(getDegreesRotated());
int distanceToEdge;
if ((DisplayController.getNavigationMode(out.getContext()) == THREE_BUTTONS)
diff --git a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
index 55bb5e8..387e980 100644
--- a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
+++ b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
@@ -190,7 +190,7 @@
public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
int splitInstructionsWidth, int threeButtonNavShift) {
out.setPivotX(0);
- out.setPivotY(splitInstructionsHeight);
+ out.setPivotY(0);
out.setRotation(getDegreesRotated());
int distanceToEdge = out.getResources().getDimensionPixelSize(
R.dimen.split_instructions_bottom_margin_phone_landscape);
@@ -198,8 +198,9 @@
int insetCorrectionX = dp.getInsets().right;
// Center the view in case of unbalanced insets on top or bottom of screen
int insetCorrectionY = (dp.getInsets().bottom - dp.getInsets().top) / 2;
- out.setTranslationX(splitInstructionsWidth - distanceToEdge + insetCorrectionX);
- out.setTranslationY(((-splitInstructionsHeight + splitInstructionsWidth) / 2f)
+ out.setTranslationX(splitInstructionsWidth - splitInstructionsHeight - distanceToEdge
+ + insetCorrectionX);
+ out.setTranslationY(((splitInstructionsHeight + splitInstructionsWidth) / 2f)
+ insetCorrectionY);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams();
// Setting gravity to RIGHT instead of the lint-recommended END because we always want this