Improve the circularMask for round displays
The mask was earlier drawn as a thin ring at the display periphery. This had undesirable effects when screenshots were taken, as the ring was seen, as well as display content beyond it. This patch modifies the mask to be a black canvas with portions erased to improve the screenshot image. Bug: 18772987 Change-Id: I25ef6387879613354308e015446fe325ed8c4515
This commit is contained in:
@@ -24,6 +24,7 @@ import android.graphics.Paint;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffXfermode;
|
||||
import android.graphics.Rect;
|
||||
import android.view.Display;
|
||||
import android.view.Surface;
|
||||
@@ -35,7 +36,6 @@ import android.util.Slog;
|
||||
class CircularDisplayMask {
|
||||
private static final String TAG = "CircularDisplayMask";
|
||||
|
||||
private static final int STROKE_WIDTH = 2;
|
||||
// size of the chin
|
||||
private int mScreenOffset = 0;
|
||||
// Display dimensions
|
||||
@@ -82,9 +82,7 @@ class CircularDisplayMask {
|
||||
mDrawNeeded = true;
|
||||
mPaint = new Paint();
|
||||
mPaint.setAntiAlias(true);
|
||||
mPaint.setStyle(Paint.Style.STROKE);
|
||||
mPaint.setColor(Color.BLACK);
|
||||
mPaint.setStrokeWidth(STROKE_WIDTH);
|
||||
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
|
||||
mScreenOffset = screenOffset;
|
||||
}
|
||||
|
||||
@@ -104,7 +102,6 @@ class CircularDisplayMask {
|
||||
if (c == null) {
|
||||
return;
|
||||
}
|
||||
c.drawColor(Color.TRANSPARENT, PorterDuff.Mode.SRC);
|
||||
switch (mRotation) {
|
||||
case Surface.ROTATION_0:
|
||||
case Surface.ROTATION_90:
|
||||
@@ -122,7 +119,10 @@ class CircularDisplayMask {
|
||||
}
|
||||
|
||||
int circleRadius = mScreenSize.x / 2;
|
||||
c.drawCircle(circleRadius, circleRadius, circleRadius, mPaint);
|
||||
c.drawColor(Color.BLACK);
|
||||
|
||||
// The radius is reduced by 1 to provide an anti aliasing effect on the display edges.
|
||||
c.drawCircle(circleRadius, circleRadius, circleRadius - 1, mPaint);
|
||||
mSurface.unlockCanvasAndPost(c);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user