Fix dimming keyboard
Bug: 6354679 Change-Id: I03bb0554bc06f1aab7eaa6c69fd9241ef300318f
This commit is contained in:
parent
18178fefdc
commit
b3f0912fd1
1 changed files with 17 additions and 11 deletions
|
@ -109,7 +109,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
|
|
||||||
// Drawing
|
// Drawing
|
||||||
/** True if the entire keyboard needs to be dimmed. */
|
/** True if the entire keyboard needs to be dimmed. */
|
||||||
private boolean mNeedsToDimBackground;
|
private boolean mNeedsToDimEntireKeyboard;
|
||||||
/** Whether the keyboard bitmap buffer needs to be redrawn before it's blitted. **/
|
/** Whether the keyboard bitmap buffer needs to be redrawn before it's blitted. **/
|
||||||
private boolean mBufferNeedsUpdate;
|
private boolean mBufferNeedsUpdate;
|
||||||
/** True if all keys should be drawn */
|
/** True if all keys should be drawn */
|
||||||
|
@ -455,13 +455,16 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
final KeyDrawParams params = mKeyDrawParams;
|
final KeyDrawParams params = mKeyDrawParams;
|
||||||
|
|
||||||
if (mInvalidateAllKeys || mInvalidatedKeys.isEmpty()) {
|
if (mInvalidateAllKeys || mInvalidatedKeys.isEmpty()) {
|
||||||
mInvalidatedKeysRect.set(0, 0, getWidth(), getHeight());
|
mInvalidatedKeysRect.set(0, 0, width, height);
|
||||||
canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE);
|
canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE);
|
||||||
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
|
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
|
||||||
// Draw all keys.
|
// Draw all keys.
|
||||||
for (final Key key : mKeyboard.mKeys) {
|
for (final Key key : mKeyboard.mKeys) {
|
||||||
onDrawKey(key, canvas, paint, params);
|
onDrawKey(key, canvas, paint, params);
|
||||||
}
|
}
|
||||||
|
if (mNeedsToDimEntireKeyboard) {
|
||||||
|
drawDimRectangle(canvas, mInvalidatedKeysRect, mBackgroundDimAlpha, paint);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Draw invalidated keys.
|
// Draw invalidated keys.
|
||||||
for (final Key key : mInvalidatedKeys) {
|
for (final Key key : mInvalidatedKeys) {
|
||||||
|
@ -471,24 +474,20 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE);
|
canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE);
|
||||||
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
|
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
|
||||||
onDrawKey(key, canvas, paint, params);
|
onDrawKey(key, canvas, paint, params);
|
||||||
|
if (mNeedsToDimEntireKeyboard) {
|
||||||
|
drawDimRectangle(canvas, mInvalidatedKeysRect, mBackgroundDimAlpha, paint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overlay a dark rectangle to dim the entire keyboard
|
|
||||||
if (mNeedsToDimBackground) {
|
|
||||||
paint.setColor(Color.BLACK);
|
|
||||||
paint.setAlpha(mBackgroundDimAlpha);
|
|
||||||
canvas.drawRect(0, 0, width, height, paint);
|
|
||||||
}
|
|
||||||
|
|
||||||
mInvalidatedKeys.clear();
|
mInvalidatedKeys.clear();
|
||||||
mInvalidatedKeysRect.setEmpty();
|
mInvalidatedKeysRect.setEmpty();
|
||||||
mInvalidateAllKeys = false;
|
mInvalidateAllKeys = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dimEntireKeyboard(boolean dimmed) {
|
public void dimEntireKeyboard(boolean dimmed) {
|
||||||
final boolean needsRedrawing = mNeedsToDimBackground != dimmed;
|
final boolean needsRedrawing = mNeedsToDimEntireKeyboard != dimmed;
|
||||||
mNeedsToDimBackground = dimmed;
|
mNeedsToDimEntireKeyboard = dimmed;
|
||||||
if (needsRedrawing) {
|
if (needsRedrawing) {
|
||||||
invalidateAllKeys();
|
invalidateAllKeys();
|
||||||
}
|
}
|
||||||
|
@ -809,6 +808,13 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
canvas.translate(-x, -y);
|
canvas.translate(-x, -y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Overlay a dark rectangle to dim.
|
||||||
|
private static void drawDimRectangle(Canvas canvas, Rect rect, int alpha, Paint paint) {
|
||||||
|
paint.setColor(Color.BLACK);
|
||||||
|
paint.setAlpha(alpha);
|
||||||
|
canvas.drawRect(rect, paint);
|
||||||
|
}
|
||||||
|
|
||||||
public Paint newDefaultLabelPaint() {
|
public Paint newDefaultLabelPaint() {
|
||||||
final Paint paint = new Paint();
|
final Paint paint = new Paint();
|
||||||
paint.setAntiAlias(true);
|
paint.setAntiAlias(true);
|
||||||
|
|
Loading…
Reference in a new issue