diff --git a/quickstep/res/drawable-hdpi/recents_horizontal_scrim_left.png b/quickstep/res/drawable-hdpi/recents_horizontal_scrim_left.png deleted file mode 100644 index d4f995dfb1..0000000000 Binary files a/quickstep/res/drawable-hdpi/recents_horizontal_scrim_left.png and /dev/null differ diff --git a/quickstep/res/drawable-hdpi/recents_horizontal_scrim_right.png b/quickstep/res/drawable-hdpi/recents_horizontal_scrim_right.png deleted file mode 100644 index 9013c1a2fb..0000000000 Binary files a/quickstep/res/drawable-hdpi/recents_horizontal_scrim_right.png and /dev/null differ diff --git a/quickstep/res/drawable-mdpi/recents_horizontal_scrim_left.png b/quickstep/res/drawable-mdpi/recents_horizontal_scrim_left.png deleted file mode 100644 index 6e924ecbd9..0000000000 Binary files a/quickstep/res/drawable-mdpi/recents_horizontal_scrim_left.png and /dev/null differ diff --git a/quickstep/res/drawable-mdpi/recents_horizontal_scrim_right.png b/quickstep/res/drawable-mdpi/recents_horizontal_scrim_right.png deleted file mode 100644 index 33d0edd787..0000000000 Binary files a/quickstep/res/drawable-mdpi/recents_horizontal_scrim_right.png and /dev/null differ diff --git a/quickstep/res/drawable-xhdpi/recents_horizontal_scrim_left.png b/quickstep/res/drawable-xhdpi/recents_horizontal_scrim_left.png deleted file mode 100644 index 20c85e6711..0000000000 Binary files a/quickstep/res/drawable-xhdpi/recents_horizontal_scrim_left.png and /dev/null differ diff --git a/quickstep/res/drawable-xhdpi/recents_horizontal_scrim_right.png b/quickstep/res/drawable-xhdpi/recents_horizontal_scrim_right.png deleted file mode 100644 index 58a1ca07bf..0000000000 Binary files a/quickstep/res/drawable-xhdpi/recents_horizontal_scrim_right.png and /dev/null differ diff --git a/quickstep/res/drawable-xxhdpi/recents_horizontal_scrim_left.png b/quickstep/res/drawable-xxhdpi/recents_horizontal_scrim_left.png deleted file mode 100644 index 9d3dc318b9..0000000000 Binary files a/quickstep/res/drawable-xxhdpi/recents_horizontal_scrim_left.png and /dev/null differ diff --git a/quickstep/res/drawable-xxhdpi/recents_horizontal_scrim_right.png b/quickstep/res/drawable-xxhdpi/recents_horizontal_scrim_right.png deleted file mode 100644 index 7fb248b9fa..0000000000 Binary files a/quickstep/res/drawable-xxhdpi/recents_horizontal_scrim_right.png and /dev/null differ diff --git a/quickstep/res/drawable-xxxhdpi/recents_horizontal_scrim_left.png b/quickstep/res/drawable-xxxhdpi/recents_horizontal_scrim_left.png deleted file mode 100644 index 49ec7aa61c..0000000000 Binary files a/quickstep/res/drawable-xxxhdpi/recents_horizontal_scrim_left.png and /dev/null differ diff --git a/quickstep/res/drawable-xxxhdpi/recents_horizontal_scrim_right.png b/quickstep/res/drawable-xxxhdpi/recents_horizontal_scrim_right.png deleted file mode 100644 index a8922e2381..0000000000 Binary files a/quickstep/res/drawable-xxxhdpi/recents_horizontal_scrim_right.png and /dev/null differ diff --git a/quickstep/res/layout/overview_panel.xml b/quickstep/res/layout/overview_panel.xml index e2f9ba83b2..89e057148f 100644 --- a/quickstep/res/layout/overview_panel.xml +++ b/quickstep/res/layout/overview_panel.xml @@ -21,7 +21,6 @@ android:layout_height="match_parent" android:clipChildren="false" android:clipToPadding="false" - android:alpha="0.0" android:visibility="invisible" android:focusableInTouchMode="true" > diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index e61e35958c..b751e0d9c9 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -22,7 +22,6 @@ 2dp 20dp 10dp - 100dp diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java index abbf45e2a1..a72b1b15bf 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java @@ -110,8 +110,7 @@ public class OverviewState extends LauncherState { @Override public int getVisibleElements(Launcher launcher) { if (launcher.getDeviceProfile().isVerticalBarLayout()) { - // TODO: Remove hotseat from overview - return HOTSEAT_ICONS; + return NONE; } else { return launcher.getAppsView().getFloatingHeaderView().hasVisibleContent() ? HOTSEAT_EXTRA | ALL_APPS_HEADER_EXTRA : HOTSEAT_ICONS | HOTSEAT_EXTRA; diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java index b993c3c932..d8f206c5ed 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java @@ -22,6 +22,7 @@ import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.compat.AccessibilityManagerCompat.isAccessibilityEnabled; import static com.android.quickstep.views.LauncherRecentsView.TRANSLATION_X_FACTOR; import static com.android.quickstep.views.LauncherRecentsView.TRANSLATION_Y_FACTOR; +import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA; import android.animation.ValueAnimator; import android.annotation.TargetApi; @@ -49,7 +50,7 @@ public class RecentsViewStateController implements StateHandler { @Override public void setState(LauncherState state) { - mRecentsView.setAlpha(state.overviewUi ? 1 : 0); + mRecentsView.setContentAlpha(state.overviewUi ? 1 : 0); updateVisibility(mRecentsView, isAccessibilityEnabled(mLauncher)); float[] translationFactor = state.getOverviewTranslationFactor(mLauncher); mRecentsView.setTranslationXFactor(translationFactor[0]); @@ -83,7 +84,7 @@ public class RecentsViewStateController implements StateHandler { setter.setFloat(mRecentsView, TRANSLATION_Y_FACTOR, translationFactor[1], builder.getInterpolator(ANIM_OVERVIEW_TRANSLATION, LINEAR)); - setter.setViewAlpha(mRecentsView, toState.overviewUi ? 1 : 0, LINEAR); + setter.setFloat(mRecentsView, CONTENT_ALPHA, toState.overviewUi ? 1 : 0, LINEAR); if (toState.overviewUi) { ValueAnimator updateAnim = ValueAnimator.ofFloat(0, 1); diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java index 130d34c8b7..861b5fa038 100644 --- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java @@ -19,18 +19,7 @@ import static com.android.launcher3.LauncherState.NORMAL; import android.annotation.TargetApi; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapShader; -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.PorterDuff.Mode; -import android.graphics.PorterDuffXfermode; import android.graphics.Rect; -import android.graphics.Shader; -import android.graphics.Shader.TileMode; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; import android.util.FloatProperty; @@ -75,12 +64,6 @@ public class LauncherRecentsView extends RecentsView implements Insett } }; - private Bitmap mScrim; - private Paint mFadePaint; - private Shader mFadeShader; - private Matrix mFadeMatrix; - private boolean mScrimOnLeft; - private float mTranslationXFactor; private float mTranslationYFactor; private Rect mPagePadding = new Rect(); @@ -95,6 +78,7 @@ public class LauncherRecentsView extends RecentsView implements Insett public LauncherRecentsView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + setContentAlpha(0); } @Override @@ -109,60 +93,6 @@ public class LauncherRecentsView extends RecentsView implements Insett setPadding(padding.left, padding.top, padding.right, 0); mPagePadding.set(padding); mPagePadding.top += getResources().getDimensionPixelSize(R.dimen.task_thumbnail_top_margin); - - if (dp.isVerticalBarLayout()) { - boolean wasScrimOnLeft = mScrimOnLeft; - mScrimOnLeft = dp.isSeascape(); - - if (mScrim == null || wasScrimOnLeft != mScrimOnLeft) { - Drawable scrim = getContext().getDrawable(mScrimOnLeft - ? R.drawable.recents_horizontal_scrim_left - : R.drawable.recents_horizontal_scrim_right); - if (scrim instanceof BitmapDrawable) { - mScrim = ((BitmapDrawable) scrim).getBitmap(); - mFadePaint = new Paint(); - mFadePaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); - mFadeShader = new BitmapShader(mScrim, TileMode.CLAMP, TileMode.REPEAT); - mFadeMatrix = new Matrix(); - } else { - mScrim = null; - } - } - } else { - mScrim = null; - mFadePaint = null; - mFadeShader = null; - mFadeMatrix = null; - } - } - - @Override - public void draw(Canvas canvas) { - if (mScrim == null) { - super.draw(canvas); - return; - } - - final int flags = Canvas.HAS_ALPHA_LAYER_SAVE_FLAG; - - int length = mScrim.getWidth(); - int height = getHeight(); - int saveCount = canvas.getSaveCount(); - - int scrimLeft; - if (mScrimOnLeft) { - scrimLeft = getScrollX(); - } else { - scrimLeft = getScrollX() + getWidth() - length; - } - canvas.saveLayer(scrimLeft, 0, scrimLeft + length, height, null, flags); - super.draw(canvas); - - mFadeMatrix.setTranslate(scrimLeft, 0); - mFadeShader.setLocalMatrix(mFadeMatrix); - mFadePaint.setShader(mFadeShader); - canvas.drawRect(scrimLeft, 0, scrimLeft + length, height, mFadePaint); - canvas.restoreToCount(saveCount); } @Override diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index c7563b700a..8901e6d8c6 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -33,6 +33,7 @@ import android.graphics.Rect; import android.os.Build; import android.util.ArraySet; import android.util.AttributeSet; +import android.util.FloatProperty; import android.util.SparseBooleanArray; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -66,6 +67,21 @@ import java.util.ArrayList; public abstract class RecentsView extends PagedView implements OnSharedPreferenceChangeListener { + public static final FloatProperty CONTENT_ALPHA = + new FloatProperty("contentAlpha") { + + + @Override + public void setValue(RecentsView recentsView, float v) { + recentsView.setContentAlpha(v); + } + + @Override + public Float get(RecentsView recentsView) { + return recentsView.mContentAlpha; + } + }; + private static final String PREF_FLIP_RECENTS = "pref_flip_recents"; private static final int DISMISS_TASK_DURATION = 300; @@ -109,6 +125,8 @@ public abstract class RecentsView private PendingAnimation mPendingAnimation; + private float mContentAlpha = 1; + // Keeps track of task views whose visual state should not be reset private ArraySet mIgnoreResetTaskViews = new ArraySet<>(); @@ -305,12 +323,10 @@ public abstract class RecentsView float overviewHeight, overviewWidth; if (profile.isVerticalBarLayout()) { - float scrimLength = context.getResources() - .getDimension(R.dimen.recents_page_fade_length); float maxPadding = Math.max(padding.left, padding.right); // Use the same padding on both sides for symmetry. - float availableWidth = taskWidth - 2 * Math.max(maxPadding, scrimLength); + float availableWidth = taskWidth - 2 * maxPadding; float availableHeight = profile.availableHeightPx - padding.top - padding.bottom - sTempStableInsets.top; float scaledRatio = Math.min(availableWidth / taskWidth, availableHeight / taskHeight); @@ -675,4 +691,21 @@ public abstract class RecentsView final TaskView nextTask = (TaskView) getChildAt(getNextPage()); nextTask.launchTask(true); } + + public void setContentAlpha(float alpha) { + if (mContentAlpha == alpha) { + return; + } + mContentAlpha = alpha; + for (int i = getChildCount() - 1; i >= 0; i--) { + getChildAt(i).setAlpha(alpha); + } + setVisibility(alpha > 0 ? VISIBLE : GONE); + } + + @Override + public void onViewAdded(View child) { + super.onViewAdded(child); + child.setAlpha(mContentAlpha); + } } diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index 7de1600aef..8dea6032d4 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -176,6 +176,12 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback setScaleY(scale); } + @Override + public boolean hasOverlappingRendering() { + // TODO: Clip-out the icon region from the thumbnail, since they are overlapping. + return false; + } + private static final class TaskOutlineProvider extends ViewOutlineProvider { private final int mMarginTop; diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 9eff84b0e3..a1ac122d87 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -188,6 +188,10 @@ public abstract class PagedView extends ViewGrou mMinFlingVelocity = (int) (MIN_FLING_VELOCITY * density); mMinSnapVelocity = (int) (MIN_SNAP_VELOCITY * density); setWillNotDraw(false); + + if (Utilities.ATLEAST_OREO) { + setDefaultFocusHighlightEnabled(false); + } } protected void setDefaultInterpolator(Interpolator interpolator) {