Merge "Fixed QS tiles incorrectly clipping in landscape shade" into udc-dev
This commit is contained in:
@@ -131,7 +131,8 @@ public interface QS extends FragmentBase {
|
||||
/**
|
||||
* A rounded corner clipping that makes QS feel as if it were behind everything.
|
||||
*/
|
||||
void setFancyClipping(int top, int bottom, int cornerRadius, boolean visible);
|
||||
void setFancyClipping(int leftInset, int top, int rightInset, int bottom, int cornerRadius,
|
||||
boolean visible, boolean fullWidth);
|
||||
|
||||
/**
|
||||
* @return if quick settings is fully collapsed currently
|
||||
|
||||
@@ -38,7 +38,9 @@ import java.io.PrintWriter;
|
||||
*/
|
||||
public class QSContainerImpl extends FrameLayout implements Dumpable {
|
||||
|
||||
private int mFancyClippingLeftInset;
|
||||
private int mFancyClippingTop;
|
||||
private int mFancyClippingRightInset;
|
||||
private int mFancyClippingBottom;
|
||||
private final float[] mFancyClippingRadii = new float[] {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
private final Path mFancyClippingPath = new Path();
|
||||
@@ -53,6 +55,7 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
|
||||
private boolean mQsDisabled;
|
||||
private int mContentHorizontalPadding = -1;
|
||||
private boolean mClippingEnabled;
|
||||
private boolean mIsFullWidth;
|
||||
|
||||
public QSContainerImpl(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -237,7 +240,8 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
|
||||
/**
|
||||
* Clip QS bottom using a concave shape.
|
||||
*/
|
||||
public void setFancyClipping(int top, int bottom, int radius, boolean enabled) {
|
||||
public void setFancyClipping(int leftInset, int top, int rightInset, int bottom, int radius,
|
||||
boolean enabled, boolean fullWidth) {
|
||||
boolean updatePath = false;
|
||||
if (mFancyClippingRadii[0] != radius) {
|
||||
mFancyClippingRadii[0] = radius;
|
||||
@@ -246,10 +250,18 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
|
||||
mFancyClippingRadii[3] = radius;
|
||||
updatePath = true;
|
||||
}
|
||||
if (mFancyClippingLeftInset != leftInset) {
|
||||
mFancyClippingLeftInset = leftInset;
|
||||
updatePath = true;
|
||||
}
|
||||
if (mFancyClippingTop != top) {
|
||||
mFancyClippingTop = top;
|
||||
updatePath = true;
|
||||
}
|
||||
if (mFancyClippingRightInset != rightInset) {
|
||||
mFancyClippingRightInset = rightInset;
|
||||
updatePath = true;
|
||||
}
|
||||
if (mFancyClippingBottom != bottom) {
|
||||
mFancyClippingBottom = bottom;
|
||||
updatePath = true;
|
||||
@@ -258,6 +270,10 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
|
||||
mClippingEnabled = enabled;
|
||||
updatePath = true;
|
||||
}
|
||||
if (mIsFullWidth != fullWidth) {
|
||||
mIsFullWidth = fullWidth;
|
||||
updatePath = true;
|
||||
}
|
||||
|
||||
if (updatePath) {
|
||||
updateClippingPath();
|
||||
@@ -281,15 +297,21 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
|
||||
return;
|
||||
}
|
||||
|
||||
mFancyClippingPath.addRoundRect(0, mFancyClippingTop, getWidth(),
|
||||
int clippingLeft = mIsFullWidth ? -mFancyClippingLeftInset : 0;
|
||||
int clippingRight = mIsFullWidth ? getWidth() + mFancyClippingRightInset : getWidth();
|
||||
mFancyClippingPath.addRoundRect(clippingLeft, mFancyClippingTop, clippingRight,
|
||||
mFancyClippingBottom, mFancyClippingRadii, Path.Direction.CW);
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dump(PrintWriter pw, String[] args) {
|
||||
pw.println(getClass().getSimpleName() + " updateClippingPath: top("
|
||||
+ mFancyClippingTop + ") bottom(" + mFancyClippingBottom + ") mClippingEnabled("
|
||||
+ mClippingEnabled + ")");
|
||||
pw.println(getClass().getSimpleName() + " updateClippingPath: "
|
||||
+ "leftInset(" + mFancyClippingLeftInset + ") "
|
||||
+ "top(" + mFancyClippingTop + ") "
|
||||
+ "rightInset(" + mFancyClippingRightInset + ") "
|
||||
+ "bottom(" + mFancyClippingBottom + ") "
|
||||
+ "mClippingEnabled(" + mClippingEnabled + ") "
|
||||
+ "mIsFullWidth(" + mIsFullWidth + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,9 +18,10 @@ import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS;
|
||||
|
||||
import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
|
||||
import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL;
|
||||
import static com.android.systemui.statusbar.disableflags.DisableFlagsLogger.DisableState;
|
||||
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
|
||||
import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED;
|
||||
import static com.android.systemui.statusbar.disableflags.DisableFlagsLogger.DisableState;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.content.res.Configuration;
|
||||
@@ -395,9 +396,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFancyClipping(int top, int bottom, int cornerRadius, boolean visible) {
|
||||
public void setFancyClipping(int leftInset, int top, int rightInset, int bottom,
|
||||
int cornerRadius, boolean visible, boolean fullWidth) {
|
||||
if (getView() instanceof QSContainerImpl) {
|
||||
((QSContainerImpl) getView()).setFancyClipping(top, bottom, cornerRadius, visible);
|
||||
((QSContainerImpl) getView()).setFancyClipping(leftInset, top, rightInset, bottom,
|
||||
cornerRadius, visible, fullWidth);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1230,10 +1230,13 @@ public class QuickSettingsController {
|
||||
mVisible = qsVisible;
|
||||
mQs.setQsVisible(qsVisible);
|
||||
mQs.setFancyClipping(
|
||||
mDisplayLeftInset,
|
||||
clipTop,
|
||||
mDisplayRightInset,
|
||||
clipBottom,
|
||||
radius,
|
||||
qsVisible && !mSplitShadeEnabled);
|
||||
qsVisible && !mSplitShadeEnabled,
|
||||
mIsFullWidth);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user