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:
Prashant Malani
2015-01-07 18:30:27 -08:00
parent f61bc8a262
commit ea481beda6

View File

@@ -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);
}