Merge "Make foreground scrim darker on Recents View." into sc-dev
This commit is contained in:
commit
6ee0782167
|
@ -63,7 +63,9 @@ import android.annotation.TargetApi;
|
|||
import android.app.ActivityManager.RunningTaskInfo;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.BlendMode;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
|
@ -98,6 +100,7 @@ import android.widget.OverScroller;
|
|||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.UiThread;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
|
||||
import com.android.launcher3.BaseActivity;
|
||||
import com.android.launcher3.BaseActivity.MultiWindowModeChangedListener;
|
||||
|
@ -243,6 +246,24 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Can be used to tint the color of the RecentsView to simulate a scrim that can views
|
||||
* excluded from. Really should be a proper scrim.
|
||||
* TODO(b/187528071): Remove this and replace with a real scrim.
|
||||
*/
|
||||
private static final FloatProperty<RecentsView> COLOR_TINT =
|
||||
new FloatProperty<RecentsView>("colorTint") {
|
||||
@Override
|
||||
public void setValue(RecentsView recentsView, float v) {
|
||||
recentsView.setColorTint(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(RecentsView recentsView) {
|
||||
return recentsView.getColorTint();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Even though {@link TaskView} has distinct offsetTranslationX/Y and resistance property, they
|
||||
* are currently both used to apply secondary translation. Should their use cases change to be
|
||||
|
@ -404,6 +425,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
// The GestureEndTarget that is still in progress.
|
||||
protected GestureState.GestureEndTarget mCurrentGestureEndTarget;
|
||||
|
||||
// TODO(b/187528071): Remove these and replace with a real scrim.
|
||||
private float mColorTint;
|
||||
private final int mTintingColor;
|
||||
|
||||
private int mOverScrollShift = 0;
|
||||
|
||||
/**
|
||||
|
@ -616,6 +641,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
mLiveTileTaskViewSimulator.recentsViewScale.value = 1;
|
||||
mLiveTileTaskViewSimulator.setOrientationState(mOrientationState);
|
||||
mLiveTileTaskViewSimulator.setDrawsBelowRecents(true);
|
||||
|
||||
mTintingColor = getForegroundScrimDimColor(context);
|
||||
}
|
||||
|
||||
public OverScroller getScroller() {
|
||||
|
@ -1186,6 +1213,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
loadVisibleTaskData(TaskView.FLAG_UPDATE_ALL);
|
||||
setTaskModalness(0);
|
||||
updateVerticalPageOffsets();
|
||||
setColorTint(0);
|
||||
}
|
||||
|
||||
public void setFullscreenProgress(float fullscreenProgress) {
|
||||
|
@ -3661,9 +3689,34 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
* tasks to be dimmed while other elements in the recents view are left alone.
|
||||
*/
|
||||
public void showForegroundScrim(boolean show) {
|
||||
ObjectAnimator anim = ObjectAnimator.ofFloat(this, COLOR_TINT, show ? 0.5f : 0f);
|
||||
anim.setAutoCancel(true);
|
||||
anim.start();
|
||||
}
|
||||
|
||||
/** Tint the RecentsView and TaskViews in to simulate a scrim. */
|
||||
// TODO(b/187528071): Replace this tinting with a scrim on top of RecentsView
|
||||
private void setColorTint(float tintAmount) {
|
||||
mColorTint = tintAmount;
|
||||
|
||||
for (int i = 0; i < getTaskViewCount(); i++) {
|
||||
getTaskViewAt(i).showColorTint(show);
|
||||
getTaskViewAt(i).setColorTint(mColorTint, mTintingColor);
|
||||
}
|
||||
|
||||
Drawable scrimBg = mActivity.getScrimView().getBackground();
|
||||
if (scrimBg != null) {
|
||||
if (tintAmount == 0f) {
|
||||
scrimBg.setTintList(null);
|
||||
} else {
|
||||
scrimBg.setTintBlendMode(BlendMode.SRC_OVER);
|
||||
scrimBg.setTint(
|
||||
ColorUtils.setAlphaComponent(mTintingColor, (int) (255 * tintAmount)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private float getColorTint() {
|
||||
return mColorTint;
|
||||
}
|
||||
|
||||
private boolean showAsGrid() {
|
||||
|
@ -3739,4 +3792,11 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
/** Get the color used for foreground scrimming the RecentsView for sharing. */
|
||||
public static int getForegroundScrimDimColor(Context context) {
|
||||
int baseColor = Themes.getAttrColor(context, R.attr.overviewScrimColor);
|
||||
// The Black blending is temporary until we have the proper color token.
|
||||
return ColorUtils.blendARGB(Color.BLACK, baseColor, 0.25f);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,6 @@ import com.android.launcher3.config.FeatureFlags;
|
|||
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
|
||||
import com.android.launcher3.util.MainThreadInitializedObject;
|
||||
import com.android.launcher3.util.SystemUiController;
|
||||
import com.android.launcher3.util.Themes;
|
||||
import com.android.quickstep.TaskOverlayFactory.TaskOverlay;
|
||||
import com.android.quickstep.views.TaskView.FullscreenDrawParams;
|
||||
import com.android.systemui.plugins.OverviewScreenshotActions;
|
||||
|
@ -121,7 +120,7 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
|||
// Initialize with placeholder value. It is overridden later by TaskView
|
||||
mFullscreenParams = TEMP_PARAMS.get(context);
|
||||
|
||||
mDimColor = Themes.getColorBackgroundFloating(context);
|
||||
mDimColor = RecentsView.getForegroundScrimDimColor(context);
|
||||
mDimmingPaintAfterClearing.setColor(mDimColor);
|
||||
}
|
||||
|
||||
|
|
|
@ -88,7 +88,6 @@ import com.android.launcher3.util.ActivityOptionsWrapper;
|
|||
import com.android.launcher3.util.ComponentKey;
|
||||
import com.android.launcher3.util.RunnableList;
|
||||
import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
|
||||
import com.android.launcher3.util.Themes;
|
||||
import com.android.launcher3.util.TransformingTouchDelegate;
|
||||
import com.android.launcher3.util.ViewPool.Reusable;
|
||||
import com.android.quickstep.RecentsModel;
|
||||
|
@ -328,19 +327,6 @@ public class TaskView extends FrameLayout implements Reusable {
|
|||
}
|
||||
};
|
||||
|
||||
private static final FloatProperty<TaskView> COLOR_TINT =
|
||||
new FloatProperty<TaskView>("colorTint") {
|
||||
@Override
|
||||
public void setValue(TaskView taskView, float v) {
|
||||
taskView.setColorTint(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(TaskView taskView) {
|
||||
return taskView.getColorTint();
|
||||
}
|
||||
};
|
||||
|
||||
private final TaskOutlineProvider mOutlineProvider;
|
||||
|
||||
private Task mTask;
|
||||
|
@ -393,11 +379,6 @@ public class TaskView extends FrameLayout implements Reusable {
|
|||
private final float[] mIconCenterCoords = new float[2];
|
||||
private final float[] mChipCenterCoords = new float[2];
|
||||
|
||||
// Colored tint for the task view and all its supplementary views (like the task icon and well
|
||||
// being banner.
|
||||
private final int mTintingColor;
|
||||
private float mTintAmount;
|
||||
|
||||
private boolean mIsClickableAsLiveTile = true;
|
||||
|
||||
public TaskView(Context context) {
|
||||
|
@ -419,8 +400,6 @@ public class TaskView extends FrameLayout implements Reusable {
|
|||
mOutlineProvider = new TaskOutlineProvider(getContext(), mCurrentFullscreenParams,
|
||||
mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx);
|
||||
setOutlineProvider(mOutlineProvider);
|
||||
|
||||
mTintingColor = Themes.getColorBackgroundFloating(context);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -864,7 +843,7 @@ public class TaskView extends FrameLayout implements Reusable {
|
|||
setTranslationZ(0);
|
||||
setAlpha(mStableAlpha);
|
||||
setIconScaleAndDim(1);
|
||||
setColorTint(0);
|
||||
setColorTint(0, 0);
|
||||
}
|
||||
|
||||
public void setStableAlpha(float parentAlpha) {
|
||||
|
@ -1472,25 +1451,13 @@ public class TaskView extends FrameLayout implements Reusable {
|
|||
getRecentsView().initiateSplitSelect(this, splitPositionOption);
|
||||
}
|
||||
|
||||
private void setColorTint(float amount) {
|
||||
mTintAmount = amount;
|
||||
mSnapshotView.setDimAlpha(mTintAmount);
|
||||
mIconView.setIconColorTint(mTintingColor, mTintAmount);
|
||||
mDigitalWellBeingToast.setBannerColorTint(mTintingColor, mTintAmount);
|
||||
}
|
||||
|
||||
private float getColorTint() {
|
||||
return mTintAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the task view with a color tint (animates value).
|
||||
* Set a color tint on the snapshot and supporting views.
|
||||
*/
|
||||
public void showColorTint(boolean enable) {
|
||||
ObjectAnimator tintAnimator = ObjectAnimator.ofFloat(
|
||||
this, COLOR_TINT, enable ? MAX_PAGE_SCRIM_ALPHA : 0);
|
||||
tintAnimator.setAutoCancel(true);
|
||||
tintAnimator.start();
|
||||
public void setColorTint(float amount, int tintColor) {
|
||||
mSnapshotView.setDimAlpha(amount);
|
||||
mIconView.setIconColorTint(tintColor, amount);
|
||||
mDigitalWellBeingToast.setBannerColorTint(tintColor, amount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue