Add scrim under status bar and above thumbnails.
For Recents Go, the thumbnails actually go directly under the status bar text, so we should ensure that there is some scrim to ensure it's always readable. We do this by adding a foreground drawable scrim to the activity's root view. Since this root view is used in other Launcher states, Launcher has to toggle this on and off when going/leaving recents. When this view is just being used for recents as a stand-alone, however, (i.e. when the user has a different default launcher), it's fine to set this once at the beginning since nothing else uses the root view. Bug: 131834685 Fix: 131834685 Test: When quickstep is the default, go to recents and back. Status bar is readable. Scrim does not animate when going to and from recents. Test: When quickstep is not the default, scrim shows up fine Change-Id: I5d88a1fd873860887b3141e1ec0ee999f59ccfad
This commit is contained in:
parent
d16f87f52d
commit
e659758f17
|
@ -52,11 +52,18 @@ public class OverviewState extends LauncherState {
|
|||
public void onStateEnabled(Launcher launcher) {
|
||||
IconRecentsView recentsView = launcher.getOverviewPanel();
|
||||
recentsView.onBeginTransitionToOverview();
|
||||
recentsView.setShowStatusBarForegroundScrim(true);
|
||||
// Request orientation be set to unspecified, letting the system decide the best
|
||||
// orientation.
|
||||
launcher.getRotationHelper().setCurrentStateRequest(REQUEST_ROTATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStateDisabled(Launcher launcher) {
|
||||
IconRecentsView recentsView = launcher.getOverviewPanel();
|
||||
recentsView.setShowStatusBarForegroundScrim(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageAlphaProvider getWorkspacePageAlphaProvider(Launcher launcher) {
|
||||
return new PageAlphaProvider(DEACCEL_2) {
|
||||
|
|
|
@ -37,6 +37,7 @@ public final class RecentsActivity extends BaseRecentsActivity {
|
|||
mRecentsRootView = findViewById(R.id.drag_layer);
|
||||
mIconRecentsView = findViewById(R.id.overview_panel);
|
||||
mIconRecentsView.setRecentsToActivityHelper(new FallbackRecentsToActivityHelper(this));
|
||||
mIconRecentsView.setShowStatusBarForegroundScrim(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -33,6 +33,7 @@ import android.animation.ValueAnimator;
|
|||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.ArraySet;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.FloatProperty;
|
||||
|
@ -54,6 +55,7 @@ import androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListene
|
|||
import com.android.launcher3.BaseActivity;
|
||||
import com.android.launcher3.Insettable;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.util.Themes;
|
||||
import com.android.quickstep.ContentFillItemAnimator;
|
||||
import com.android.quickstep.RecentsModel;
|
||||
import com.android.quickstep.RecentsToActivityHelper;
|
||||
|
@ -114,6 +116,8 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
|||
private final DefaultItemAnimator mDefaultItemAnimator = new DefaultItemAnimator();
|
||||
private final ContentFillItemAnimator mLoadingContentItemAnimator =
|
||||
new ContentFillItemAnimator();
|
||||
private final BaseActivity mActivity;
|
||||
private final Drawable mStatusBarForegroundScrim;
|
||||
|
||||
private RecentsToActivityHelper mActivityHelper;
|
||||
private RecyclerView mTaskRecyclerView;
|
||||
|
@ -143,8 +147,10 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
|||
|
||||
public IconRecentsView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
BaseActivity activity = BaseActivity.fromContext(context);
|
||||
mActivity = BaseActivity.fromContext(context);
|
||||
mContext = context;
|
||||
mStatusBarForegroundScrim =
|
||||
Themes.getAttrDrawable(mContext, R.attr.workspaceStatusBarScrim);
|
||||
mTaskLoader = new TaskListLoader(mContext);
|
||||
mTaskAdapter = new TaskAdapter(mTaskLoader);
|
||||
mTaskAdapter.setOnClearAllClickListener(view -> animateClearAllTasks());
|
||||
|
@ -338,6 +344,21 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
|||
mTaskActionController.launchTask(taskToLaunch);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether or not to show the scrim in between the view and the top insets. This only works
|
||||
* if the view is being insetted in the first place.
|
||||
*
|
||||
* The scrim is added to the activity's root view to prevent animations on this view
|
||||
* affecting the scrim. As a result, it is the activity's responsibility to show/hide this
|
||||
* scrim as appropriate.
|
||||
*
|
||||
* @param showStatusBarForegroundScrim true to show the scrim, false to hide
|
||||
*/
|
||||
public void setShowStatusBarForegroundScrim(boolean showStatusBarForegroundScrim) {
|
||||
boolean shouldShow = mInsets.top != 0 && showStatusBarForegroundScrim;
|
||||
mActivity.getDragLayer().setForeground(shouldShow ? mStatusBarForegroundScrim : null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the bottom most thumbnail view to animate to.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue