Make circular mask thickness configurable
Obtain the circular mask thickness as a dimension so that it can be customized per-device. Change-Id: Ied88f91424c5cf4f25dd1e78cf22f0fd7ea7b0a4 Signed-off-by: Prashant Malani <pmalani@google.com>
This commit is contained in:
@@ -414,6 +414,10 @@
|
|||||||
to 0 -->
|
to 0 -->
|
||||||
<dimen name="circular_display_mask_offset">0px</dimen>
|
<dimen name="circular_display_mask_offset">0px</dimen>
|
||||||
|
|
||||||
|
<!-- Amount to reduce the size of the circular mask by (to compensate for aliasing
|
||||||
|
effects). This is only used on circular displays. -->
|
||||||
|
<dimen name="circular_display_mask_thickness">1px</dimen>
|
||||||
|
|
||||||
<dimen name="lock_pattern_dot_line_width">3dp</dimen>
|
<dimen name="lock_pattern_dot_line_width">3dp</dimen>
|
||||||
<dimen name="lock_pattern_dot_size">12dp</dimen>
|
<dimen name="lock_pattern_dot_size">12dp</dimen>
|
||||||
<dimen name="lock_pattern_dot_size_activated">28dp</dimen>
|
<dimen name="lock_pattern_dot_size_activated">28dp</dimen>
|
||||||
|
|||||||
@@ -420,6 +420,7 @@
|
|||||||
<java-symbol type="dimen" name="immersive_mode_cling_width" />
|
<java-symbol type="dimen" name="immersive_mode_cling_width" />
|
||||||
<java-symbol type="dimen" name="circular_display_mask_offset" />
|
<java-symbol type="dimen" name="circular_display_mask_offset" />
|
||||||
<java-symbol type="dimen" name="accessibility_magnification_indicator_width" />
|
<java-symbol type="dimen" name="accessibility_magnification_indicator_width" />
|
||||||
|
<java-symbol type="dimen" name="circular_display_mask_thickness" />
|
||||||
|
|
||||||
<java-symbol type="string" name="add_account_button_label" />
|
<java-symbol type="string" name="add_account_button_label" />
|
||||||
<java-symbol type="string" name="addToDictionary" />
|
<java-symbol type="string" name="addToDictionary" />
|
||||||
|
|||||||
@@ -50,9 +50,10 @@ class CircularDisplayMask {
|
|||||||
private int mRotation;
|
private int mRotation;
|
||||||
private boolean mVisible;
|
private boolean mVisible;
|
||||||
private boolean mDimensionsUnequal = false;
|
private boolean mDimensionsUnequal = false;
|
||||||
|
private int mMaskThickness;
|
||||||
|
|
||||||
public CircularDisplayMask(Display display, SurfaceSession session, int zOrder,
|
public CircularDisplayMask(Display display, SurfaceSession session, int zOrder,
|
||||||
int screenOffset) {
|
int screenOffset, int maskThickness) {
|
||||||
mScreenSize = new Point();
|
mScreenSize = new Point();
|
||||||
display.getSize(mScreenSize);
|
display.getSize(mScreenSize);
|
||||||
if (mScreenSize.x != mScreenSize.y) {
|
if (mScreenSize.x != mScreenSize.y) {
|
||||||
@@ -84,6 +85,7 @@ class CircularDisplayMask {
|
|||||||
mPaint.setAntiAlias(true);
|
mPaint.setAntiAlias(true);
|
||||||
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
|
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
|
||||||
mScreenOffset = screenOffset;
|
mScreenOffset = screenOffset;
|
||||||
|
mMaskThickness = maskThickness;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawIfNeeded() {
|
private void drawIfNeeded() {
|
||||||
@@ -121,8 +123,8 @@ class CircularDisplayMask {
|
|||||||
int circleRadius = mScreenSize.x / 2;
|
int circleRadius = mScreenSize.x / 2;
|
||||||
c.drawColor(Color.BLACK);
|
c.drawColor(Color.BLACK);
|
||||||
|
|
||||||
// The radius is reduced by 1 to provide an anti aliasing effect on the display edges.
|
// The radius is reduced by mMaskThickness to provide an anti aliasing effect on the display edges.
|
||||||
c.drawCircle(circleRadius, circleRadius, circleRadius - 1, mPaint);
|
c.drawCircle(circleRadius, circleRadius, circleRadius - mMaskThickness, mPaint);
|
||||||
mSurface.unlockCanvasAndPost(c);
|
mSurface.unlockCanvasAndPost(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5944,13 +5944,15 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
if (mCircularDisplayMask == null) {
|
if (mCircularDisplayMask == null) {
|
||||||
int screenOffset = mContext.getResources().getDimensionPixelSize(
|
int screenOffset = mContext.getResources().getDimensionPixelSize(
|
||||||
com.android.internal.R.dimen.circular_display_mask_offset);
|
com.android.internal.R.dimen.circular_display_mask_offset);
|
||||||
|
int maskThickness = mContext.getResources().getDimensionPixelSize(
|
||||||
|
com.android.internal.R.dimen.circular_display_mask_thickness);
|
||||||
|
|
||||||
mCircularDisplayMask = new CircularDisplayMask(
|
mCircularDisplayMask = new CircularDisplayMask(
|
||||||
getDefaultDisplayContentLocked().getDisplay(),
|
getDefaultDisplayContentLocked().getDisplay(),
|
||||||
mFxSession,
|
mFxSession,
|
||||||
mPolicy.windowTypeToLayerLw(
|
mPolicy.windowTypeToLayerLw(
|
||||||
WindowManager.LayoutParams.TYPE_POINTER)
|
WindowManager.LayoutParams.TYPE_POINTER)
|
||||||
* TYPE_LAYER_MULTIPLIER + 10, screenOffset);
|
* TYPE_LAYER_MULTIPLIER + 10, screenOffset, maskThickness);
|
||||||
}
|
}
|
||||||
mCircularDisplayMask.setVisibility(true);
|
mCircularDisplayMask.setVisibility(true);
|
||||||
} else if (mCircularDisplayMask != null) {
|
} else if (mCircularDisplayMask != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user