Move dimming keyboard to MainKeyboardView

Change-Id: Id44d4b758c8b92d1120d3a8b06812dc1fc26390c
main
Tadashi G. Takaoka 2013-01-21 16:36:25 +09:00
parent bde94dd96f
commit f3c4cd45a5
3 changed files with 28 additions and 27 deletions

View File

@ -58,8 +58,6 @@
<!-- Amount to offset the touch Y coordinate by, for bias correction. --> <!-- Amount to offset the touch Y coordinate by, for bias correction. -->
<attr name="verticalCorrection" format="dimension" /> <attr name="verticalCorrection" format="dimension" />
<attr name="backgroundDimAlpha" format="integer" />
</declare-styleable> </declare-styleable>
<declare-styleable name="MainKeyboardView"> <declare-styleable name="MainKeyboardView">
@ -105,6 +103,7 @@
<attr name="keyPreviewLingerTimeout" format="integer" /> <attr name="keyPreviewLingerTimeout" format="integer" />
<!-- Layout resource for more keys keyboard --> <!-- Layout resource for more keys keyboard -->
<attr name="moreKeysKeyboardLayout" format="reference" /> <attr name="moreKeysKeyboardLayout" format="reference" />
<attr name="backgroundDimAlpha" format="integer" />
<!-- More keys keyboard will shown at touched point. --> <!-- More keys keyboard will shown at touched point. -->
<attr name="showMoreKeysKeyboardAtTouchedPoint" format="boolean" /> <attr name="showMoreKeysKeyboardAtTouchedPoint" format="boolean" />
<!-- Delay after gesture trail starts fading out in millisecond. --> <!-- Delay after gesture trail starts fading out in millisecond. -->

View File

@ -52,7 +52,6 @@ import java.util.HashSet;
* @attr ref R.styleable#KeyboardView_keyPopupHintLetterPadding * @attr ref R.styleable#KeyboardView_keyPopupHintLetterPadding
* @attr ref R.styleable#KeyboardView_keyShiftedLetterHintPadding * @attr ref R.styleable#KeyboardView_keyShiftedLetterHintPadding
* @attr ref R.styleable#KeyboardView_keyTextShadowRadius * @attr ref R.styleable#KeyboardView_keyTextShadowRadius
* @attr ref R.styleable#KeyboardView_backgroundDimAlpha
* @attr ref R.styleable#KeyboardView_verticalCorrection * @attr ref R.styleable#KeyboardView_verticalCorrection
* @attr ref R.styleable#Keyboard_Key_keyTypeface * @attr ref R.styleable#Keyboard_Key_keyTypeface
* @attr ref R.styleable#Keyboard_Key_keyLetterSize * @attr ref R.styleable#Keyboard_Key_keyLetterSize
@ -83,7 +82,6 @@ public class KeyboardView extends View {
protected final float mVerticalCorrection; protected final float mVerticalCorrection;
protected final Drawable mKeyBackground; protected final Drawable mKeyBackground;
protected final Rect mKeyBackgroundPadding = new Rect(); protected final Rect mKeyBackgroundPadding = new Rect();
private final int mBackgroundDimAlpha;
// HORIZONTAL ELLIPSIS "...", character for popup hint. // HORIZONTAL ELLIPSIS "...", character for popup hint.
private static final String POPUP_HINT_CHAR = "\u2026"; private static final String POPUP_HINT_CHAR = "\u2026";
@ -101,8 +99,6 @@ public class KeyboardView extends View {
protected final KeyDrawParams mKeyDrawParams = new KeyDrawParams(); protected final KeyDrawParams mKeyDrawParams = new KeyDrawParams();
// Drawing // Drawing
/** True if the entire keyboard needs to be dimmed. */
private boolean mNeedsToDimEntireKeyboard;
/** True if all keys should be drawn */ /** True if all keys should be drawn */
private boolean mInvalidateAllKeys; private boolean mInvalidateAllKeys;
/** The keys that should be drawn */ /** The keys that should be drawn */
@ -147,8 +143,6 @@ public class KeyboardView extends View {
R.styleable.KeyboardView_keyTextShadowRadius, 0.0f); R.styleable.KeyboardView_keyTextShadowRadius, 0.0f);
mVerticalCorrection = keyboardViewAttr.getDimension( mVerticalCorrection = keyboardViewAttr.getDimension(
R.styleable.KeyboardView_verticalCorrection, 0); R.styleable.KeyboardView_verticalCorrection, 0);
mBackgroundDimAlpha = keyboardViewAttr.getInt(
R.styleable.KeyboardView_backgroundDimAlpha, 0);
keyboardViewAttr.recycle(); keyboardViewAttr.recycle();
final TypedArray keyAttr = context.obtainStyledAttributes(attrs, final TypedArray keyAttr = context.obtainStyledAttributes(attrs,
@ -203,7 +197,7 @@ public class KeyboardView extends View {
} }
@Override @Override
public void onDraw(final Canvas canvas) { protected void onDraw(final Canvas canvas) {
super.onDraw(canvas); super.onDraw(canvas);
if (canvas.isHardwareAccelerated()) { if (canvas.isHardwareAccelerated()) {
onDrawKeyboard(canvas); onDrawKeyboard(canvas);
@ -293,15 +287,6 @@ public class KeyboardView extends View {
} }
} }
// TODO: Move this code block to MainKeyboardView.onDraw
// Overlay a dark rectangle to dim.
if (mNeedsToDimEntireKeyboard) {
paint.setColor(Color.BLACK);
paint.setAlpha(mBackgroundDimAlpha);
// Note: clipRegion() above is in effect if it was called.
canvas.drawRect(0, 0, width, height, paint);
}
// ResearchLogging indicator. // ResearchLogging indicator.
// TODO: Reimplement using a keyboard background image specific to the ResearchLogger, // TODO: Reimplement using a keyboard background image specific to the ResearchLogger,
// and remove this call. // and remove this call.
@ -313,15 +298,6 @@ public class KeyboardView extends View {
mInvalidateAllKeys = false; mInvalidateAllKeys = false;
} }
// TODO: Move this method to MainKeyboardView.
public void dimEntireKeyboard(final boolean dimmed) {
final boolean needsRedrawing = mNeedsToDimEntireKeyboard != dimmed;
mNeedsToDimEntireKeyboard = dimmed;
if (needsRedrawing) {
invalidateAllKeys();
}
}
private void onDrawKey(final Key key, final Canvas canvas, final Paint paint) { private void onDrawKey(final Key key, final Canvas canvas, final Paint paint) {
final int keyDrawX = key.getDrawX() + getPaddingLeft(); final int keyDrawX = key.getDrawX() + getPaddingLeft();
final int keyDrawY = key.mY + getPaddingTop(); final int keyDrawY = key.mY + getPaddingTop();

View File

@ -24,6 +24,7 @@ import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Paint.Align; import android.graphics.Paint.Align;
import android.graphics.Typeface; import android.graphics.Typeface;
@ -98,6 +99,7 @@ import java.util.WeakHashMap;
* @attr ref R.styleable#MainKeyboardView_keyPreviewHeight * @attr ref R.styleable#MainKeyboardView_keyPreviewHeight
* @attr ref R.styleable#MainKeyboardView_keyPreviewLingerTimeout * @attr ref R.styleable#MainKeyboardView_keyPreviewLingerTimeout
* @attr ref R.styleable#MainKeyboardView_moreKeysKeyboardLayout * @attr ref R.styleable#MainKeyboardView_moreKeysKeyboardLayout
* @attr ref R.styleable#MainKeyboardView_backgroundDimAlpha
* @attr ref R.styleable#MainKeyboardView_showMoreKeysKeyboardAtTouchPoint * @attr ref R.styleable#MainKeyboardView_showMoreKeysKeyboardAtTouchPoint
* @attr ref R.styleable#MainKeyboardView_gestureFloatingPreviewTextLingerTimeout * @attr ref R.styleable#MainKeyboardView_gestureFloatingPreviewTextLingerTimeout
* @attr ref R.styleable#MainKeyboardView_gestureStaticTimeThresholdAfterFastTyping * @attr ref R.styleable#MainKeyboardView_gestureStaticTimeThresholdAfterFastTyping
@ -164,6 +166,8 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
private int mKeyPreviewLingerTimeout; private int mKeyPreviewLingerTimeout;
// More keys keyboard // More keys keyboard
private final Paint mBackgroundDimAlphaPaint = new Paint();
private boolean mNeedsToDimEntireKeyboard;
private final WeakHashMap<Key, MoreKeysPanel> mMoreKeysPanelCache = private final WeakHashMap<Key, MoreKeysPanel> mMoreKeysPanelCache =
new WeakHashMap<Key, MoreKeysPanel>(); new WeakHashMap<Key, MoreKeysPanel>();
private final int mMoreKeysLayout; private final int mMoreKeysLayout;
@ -492,6 +496,10 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
final TypedArray mainKeyboardViewAttr = context.obtainStyledAttributes( final TypedArray mainKeyboardViewAttr = context.obtainStyledAttributes(
attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView); attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView);
final int backgroundDimAlpha = mainKeyboardViewAttr.getInt(
R.styleable.MainKeyboardView_backgroundDimAlpha, 0);
mBackgroundDimAlphaPaint.setColor(Color.BLACK);
mBackgroundDimAlphaPaint.setAlpha(backgroundDimAlpha);
mAutoCorrectionSpacebarLedEnabled = mainKeyboardViewAttr.getBoolean( mAutoCorrectionSpacebarLedEnabled = mainKeyboardViewAttr.getBoolean(
R.styleable.MainKeyboardView_autoCorrectionSpacebarLedEnabled, false); R.styleable.MainKeyboardView_autoCorrectionSpacebarLedEnabled, false);
mAutoCorrectionSpacebarLedIcon = mainKeyboardViewAttr.getDrawable( mAutoCorrectionSpacebarLedIcon = mainKeyboardViewAttr.getDrawable(
@ -1306,6 +1314,24 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
invalidateKey(mSpaceKey); invalidateKey(mSpaceKey);
} }
public void dimEntireKeyboard(final boolean dimmed) {
final boolean needsRedrawing = mNeedsToDimEntireKeyboard != dimmed;
mNeedsToDimEntireKeyboard = dimmed;
if (needsRedrawing) {
invalidateAllKeys();
}
}
@Override
protected void onDraw(final Canvas canvas) {
super.onDraw(canvas);
// Overlay a dark rectangle to dim.
if (mNeedsToDimEntireKeyboard) {
canvas.drawRect(0, 0, getWidth(), getHeight(), mBackgroundDimAlphaPaint);
}
}
@Override @Override
protected void onDrawKeyTopVisuals(final Key key, final Canvas canvas, final Paint paint, protected void onDrawKeyTopVisuals(final Key key, final Canvas canvas, final Paint paint,
final KeyDrawParams params) { final KeyDrawParams params) {