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
|
||||
/** 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. **/
|
||||
private boolean mBufferNeedsUpdate;
|
||||
/** True if all keys should be drawn */
|
||||
|
@ -455,13 +455,16 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
final KeyDrawParams params = mKeyDrawParams;
|
||||
|
||||
if (mInvalidateAllKeys || mInvalidatedKeys.isEmpty()) {
|
||||
mInvalidatedKeysRect.set(0, 0, getWidth(), getHeight());
|
||||
mInvalidatedKeysRect.set(0, 0, width, height);
|
||||
canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE);
|
||||
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
|
||||
// Draw all keys.
|
||||
for (final Key key : mKeyboard.mKeys) {
|
||||
onDrawKey(key, canvas, paint, params);
|
||||
}
|
||||
if (mNeedsToDimEntireKeyboard) {
|
||||
drawDimRectangle(canvas, mInvalidatedKeysRect, mBackgroundDimAlpha, paint);
|
||||
}
|
||||
} else {
|
||||
// Draw invalidated keys.
|
||||
for (final Key key : mInvalidatedKeys) {
|
||||
|
@ -471,14 +474,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE);
|
||||
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR);
|
||||
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();
|
||||
|
@ -487,8 +486,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
}
|
||||
|
||||
public void dimEntireKeyboard(boolean dimmed) {
|
||||
final boolean needsRedrawing = mNeedsToDimBackground != dimmed;
|
||||
mNeedsToDimBackground = dimmed;
|
||||
final boolean needsRedrawing = mNeedsToDimEntireKeyboard != dimmed;
|
||||
mNeedsToDimEntireKeyboard = dimmed;
|
||||
if (needsRedrawing) {
|
||||
invalidateAllKeys();
|
||||
}
|
||||
|
@ -809,6 +808,13 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
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() {
|
||||
final Paint paint = new Paint();
|
||||
paint.setAntiAlias(true);
|
||||
|
|
Loading…
Reference in a new issue