Merge "Fix status bar background flicker" into nyc-dev
am: d0fa4d3aaf
* commit 'd0fa4d3aafa42da696c006ab96a11ed54deec14c':
Fix status bar background flicker
Change-Id: I8cb0909f952aa0e8bf7705d753fd1bc0953187ba
This commit is contained in:
@@ -43,6 +43,7 @@ import android.graphics.LinearGradient;
|
|||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.PixelFormat;
|
import android.graphics.PixelFormat;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
|
import android.graphics.Region;
|
||||||
import android.graphics.Shader;
|
import android.graphics.Shader;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
@@ -258,6 +259,26 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
|||||||
setWillNotDraw(getBackground() == null && !mBackgroundFallback.hasFallback());
|
setWillNotDraw(getBackground() == null && !mBackgroundFallback.hasFallback());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean gatherTransparentRegion(Region region) {
|
||||||
|
boolean statusOpaque = gatherTransparentRegion(mStatusColorViewState, region);
|
||||||
|
boolean navOpaque = gatherTransparentRegion(mNavigationColorViewState, region);
|
||||||
|
boolean decorOpaque = super.gatherTransparentRegion(region);
|
||||||
|
|
||||||
|
// combine bools after computation, so each method above always executes
|
||||||
|
return statusOpaque || navOpaque || decorOpaque;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean gatherTransparentRegion(ColorViewState colorViewState, Region region) {
|
||||||
|
if (colorViewState.view != null && colorViewState.visible && isResizing()) {
|
||||||
|
// If a visible ColorViewState is in a resizing host DecorView, forcibly register its
|
||||||
|
// opaque area, since it's drawn by a different root RenderNode. It would otherwise be
|
||||||
|
// rejected by ViewGroup#gatherTransparentRegion() for the view not being VISIBLE.
|
||||||
|
return colorViewState.view.gatherTransparentRegion(region);
|
||||||
|
}
|
||||||
|
return false; // no opaque area added
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDraw(Canvas c) {
|
public void onDraw(Canvas c) {
|
||||||
super.onDraw(c);
|
super.onDraw(c);
|
||||||
|
|||||||
Reference in New Issue
Block a user