[DO NOT MERGE] Support blacklisting live wallpapers from showing sysui scrims am: 3b5f2224c6
Change-Id: I430906d126f08ab77dc63e06462fc68ccfe18322
This commit is contained in:
commit
6fa8c49ad5
|
@ -80,7 +80,8 @@ public class RecentsRootView extends BaseDragLayer<RecentsActivity> {
|
|||
if (!insets.equals(mInsets)) {
|
||||
super.setInsets(insets);
|
||||
}
|
||||
setBackground(insets.top == 0 ? null
|
||||
setBackground(insets.top == 0 || !mAllowSysuiScrims
|
||||
? null
|
||||
: Themes.getAttrDrawable(getContext(), R.attr.workspaceStatusBarScrim));
|
||||
}
|
||||
|
||||
|
|
|
@ -118,4 +118,7 @@
|
|||
|
||||
<!-- Recents -->
|
||||
<item type="id" name="overview_panel"/>
|
||||
|
||||
<string-array name="live_wallpapers_remove_sysui_scrims">
|
||||
</string-array>
|
||||
</resources>
|
||||
|
|
|
@ -556,7 +556,7 @@ public class DragLayer extends BaseDragLayer<Launcher> {
|
|||
@Override
|
||||
public void setInsets(Rect insets) {
|
||||
super.setInsets(insets);
|
||||
mWorkspaceScrim.onInsetsChanged(insets);
|
||||
mWorkspaceScrim.onInsetsChanged(insets, mAllowSysuiScrims);
|
||||
mOverviewScrim.onInsetsChanged(insets);
|
||||
}
|
||||
|
||||
|
|
|
@ -187,10 +187,13 @@ public class WorkspaceAndHotseatScrim extends Scrim {
|
|||
anim.start();
|
||||
}
|
||||
|
||||
public void onInsetsChanged(Rect insets) {
|
||||
mDrawTopScrim = mTopScrim != null && insets.top > 0;
|
||||
mDrawBottomScrim = mBottomMask != null &&
|
||||
!mLauncher.getDeviceProfile().isVerticalBarLayout();
|
||||
/**
|
||||
* Determines whether to draw the top and/or bottom scrim based on new insets.
|
||||
*/
|
||||
public void onInsetsChanged(Rect insets, boolean allowSysuiScrims) {
|
||||
mDrawTopScrim = allowSysuiScrims && mTopScrim != null && insets.top > 0;
|
||||
mDrawBottomScrim = allowSysuiScrims && mBottomMask != null
|
||||
&& !mLauncher.getDeviceProfile().isVerticalBarLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -23,7 +23,13 @@ import static android.view.MotionEvent.ACTION_UP;
|
|||
import static com.android.launcher3.util.DefaultDisplay.getSingleFrameMs;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.WallpaperInfo;
|
||||
import android.app.WallpaperManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.graphics.Insets;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
|
@ -39,8 +45,11 @@ import android.view.WindowInsets;
|
|||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.InsettableFrameLayout;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.util.MultiValueAlpha;
|
||||
|
@ -100,6 +109,14 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
|
|||
|
||||
protected final T mActivity;
|
||||
private final MultiValueAlpha mMultiValueAlpha;
|
||||
private final WallpaperManager mWallpaperManager;
|
||||
private final BroadcastReceiver mWallpaperChangeReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
onWallpaperChanged();
|
||||
}
|
||||
};
|
||||
private final String[] mWallpapersWithoutSysuiScrims;
|
||||
|
||||
// All the touch controllers for the view
|
||||
protected TouchController[] mControllers;
|
||||
|
@ -110,10 +127,15 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
|
|||
|
||||
private TouchCompleteListener mTouchCompleteListener;
|
||||
|
||||
protected boolean mAllowSysuiScrims = true;
|
||||
|
||||
public BaseDragLayer(Context context, AttributeSet attrs, int alphaChannelCount) {
|
||||
super(context, attrs);
|
||||
mActivity = (T) ActivityContext.lookupContext(context);
|
||||
mMultiValueAlpha = new MultiValueAlpha(this, alphaChannelCount);
|
||||
mWallpaperManager = context.getSystemService(WallpaperManager.class);
|
||||
mWallpapersWithoutSysuiScrims = getResources().getStringArray(
|
||||
R.array.live_wallpapers_remove_sysui_scrims);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -513,4 +535,47 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
|
|||
}
|
||||
return super.dispatchApplyWindowInsets(insets);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
mActivity.registerReceiver(mWallpaperChangeReceiver,
|
||||
new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED));
|
||||
onWallpaperChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
mActivity.unregisterReceiver(mWallpaperChangeReceiver);
|
||||
}
|
||||
|
||||
private void onWallpaperChanged() {
|
||||
WallpaperInfo newWallpaperInfo = mWallpaperManager.getWallpaperInfo();
|
||||
boolean oldAllowSysuiScrims = mAllowSysuiScrims;
|
||||
mAllowSysuiScrims = computeAllowSysuiScrims(newWallpaperInfo);
|
||||
if (mAllowSysuiScrims != oldAllowSysuiScrims) {
|
||||
// Reapply insets so scrim can be removed or re-added if necessary.
|
||||
setInsets(mInsets);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether we can scrim the status bar and nav bar for the given wallpaper by
|
||||
* checking against a list of live wallpapers that we don't show the scrims on.
|
||||
*/
|
||||
private boolean computeAllowSysuiScrims(@Nullable WallpaperInfo newWallpaperInfo) {
|
||||
if (newWallpaperInfo == null) {
|
||||
// New wallpaper is static, not live. Thus, blacklist isn't applicable.
|
||||
return true;
|
||||
}
|
||||
ComponentName newWallpaper = newWallpaperInfo.getComponent();
|
||||
for (String wallpaperWithoutScrim : mWallpapersWithoutSysuiScrims) {
|
||||
if (newWallpaper.equals(ComponentName.unflattenFromString(wallpaperWithoutScrim))) {
|
||||
// New wallpaper is blacklisted from showing a scrim.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue