Optimize drawing key text shadow layer
Change-Id: Id226fe8042ba0f538d5109459a3615d7e7113d7fmain
parent
61ddac28de
commit
41f9f1ef70
|
@ -74,6 +74,7 @@
|
|||
<!-- Size of the text for spacebar language label, in the proportion of key height. -->
|
||||
<attr name="languageOnSpacebarTextRatio" format="fraction" />
|
||||
<attr name="languageOnSpacebarTextColor" format="color" />
|
||||
<attr name="languageOnSpacebarTextShadowRadius" format="float" />
|
||||
<attr name="languageOnSpacebarTextShadowColor" format="color" />
|
||||
<!-- Background image for the spacebar. -->
|
||||
<attr name="spacebarBackground" format="reference" />
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
<color name="suggested_word_color_ics">#B233B5E5</color>
|
||||
<color name="highlight_translucent_color_ics">#9933B5E5</color>
|
||||
<color name="key_text_color_holo">@android:color/white</color>
|
||||
<color name="key_text_shadow_color_holo">@android:color/transparent</color>
|
||||
<color name="key_text_inactivated_color_holo">#66E0E4E5</color>
|
||||
<color name="key_hint_letter_color_holo">#80000000</color>
|
||||
<color name="key_hint_label_color_holo">#A0FFFFFF</color>
|
||||
|
|
|
@ -56,8 +56,8 @@
|
|||
<item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
|
||||
<item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
|
||||
<item name="keyPreviewTextColor">@color/key_text_color_holo</item>
|
||||
<item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
|
||||
<item name="keyTextShadowRadius">0.0</item>
|
||||
<!-- A negative value to disable key text shadow layer. -->
|
||||
<item name="keyTextShadowRadius">-1.0</item>
|
||||
</style>
|
||||
<style
|
||||
name="MainKeyboardView.ICS"
|
||||
|
@ -71,6 +71,7 @@
|
|||
<item name="autoCorrectionSpacebarLedEnabled">false</item>
|
||||
<item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
|
||||
<item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
|
||||
<item name="languageOnSpacebarTextShadowRadius">1.0</item>
|
||||
<item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
|
||||
<item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item>
|
||||
</style>
|
||||
|
|
|
@ -56,8 +56,8 @@
|
|||
<item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
|
||||
<item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
|
||||
<item name="keyPreviewTextColor">@color/key_text_color_holo</item>
|
||||
<item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
|
||||
<item name="keyTextShadowRadius">0.0</item>
|
||||
<!-- A negative value to disable key text shadow layer. -->
|
||||
<item name="keyTextShadowRadius">-1.0</item>
|
||||
</style>
|
||||
<style
|
||||
name="MainKeyboardView.KLP"
|
||||
|
@ -71,6 +71,7 @@
|
|||
<item name="autoCorrectionSpacebarLedEnabled">false</item>
|
||||
<item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
|
||||
<item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
|
||||
<item name="languageOnSpacebarTextShadowRadius">1.0</item>
|
||||
<item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
|
||||
<item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item>
|
||||
</style>
|
||||
|
|
|
@ -56,8 +56,8 @@
|
|||
<item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
|
||||
<item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
|
||||
<item name="keyPreviewTextColor">@color/key_text_color_holo</item>
|
||||
<item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
|
||||
<item name="keyTextShadowRadius">0.0</item>
|
||||
<!-- A negative value to disable key text shadow layer. -->
|
||||
<item name="keyTextShadowRadius">-1.0</item>
|
||||
</style>
|
||||
<style
|
||||
name="MainKeyboardView.LMP"
|
||||
|
@ -71,6 +71,7 @@
|
|||
<item name="autoCorrectionSpacebarLedEnabled">false</item>
|
||||
<item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
|
||||
<item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
|
||||
<item name="languageOnSpacebarTextShadowRadius">1.0</item>
|
||||
<item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
|
||||
<item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lmp</item>
|
||||
</style>
|
||||
|
|
|
@ -82,6 +82,7 @@ public class KeyboardView extends View {
|
|||
private final float mVerticalCorrection;
|
||||
private final Drawable mKeyBackground;
|
||||
private final Rect mKeyBackgroundPadding = new Rect();
|
||||
private static final float KET_TEXT_SHADOW_RADIUS_DISABLED = -1.0f;
|
||||
|
||||
// HORIZONTAL ELLIPSIS "...", character for popup hint.
|
||||
private static final String POPUP_HINT_CHAR = "\u2026";
|
||||
|
@ -133,7 +134,7 @@ public class KeyboardView extends View {
|
|||
mKeyShiftedLetterHintPadding = keyboardViewAttr.getDimension(
|
||||
R.styleable.KeyboardView_keyShiftedLetterHintPadding, 0.0f);
|
||||
mKeyTextShadowRadius = keyboardViewAttr.getFloat(
|
||||
R.styleable.KeyboardView_keyTextShadowRadius, 0.0f);
|
||||
R.styleable.KeyboardView_keyTextShadowRadius, KET_TEXT_SHADOW_RADIUS_DISABLED);
|
||||
mVerticalCorrection = keyboardViewAttr.getDimension(
|
||||
R.styleable.KeyboardView_verticalCorrection, 0.0f);
|
||||
keyboardViewAttr.recycle();
|
||||
|
@ -414,18 +415,23 @@ public class KeyboardView extends View {
|
|||
}
|
||||
}
|
||||
|
||||
paint.setColor(key.selectTextColor(params));
|
||||
if (key.isEnabled()) {
|
||||
// Set a drop shadow for the text
|
||||
paint.setShadowLayer(mKeyTextShadowRadius, 0.0f, 0.0f, params.mTextShadowColor);
|
||||
paint.setColor(key.selectTextColor(params));
|
||||
// Set a drop shadow for the text if the shadow radius is positive value.
|
||||
if (mKeyTextShadowRadius > 0.0f) {
|
||||
paint.setShadowLayer(mKeyTextShadowRadius, 0.0f, 0.0f, params.mTextShadowColor);
|
||||
} else {
|
||||
paint.clearShadowLayer();
|
||||
}
|
||||
} else {
|
||||
// Make label invisible
|
||||
paint.setColor(Color.TRANSPARENT);
|
||||
paint.clearShadowLayer();
|
||||
}
|
||||
blendAlpha(paint, params.mAnimAlpha);
|
||||
canvas.drawText(label, 0, label.length(), positionX, baseline, paint);
|
||||
// Turn off drop shadow and reset x-scale.
|
||||
paint.setShadowLayer(0.0f, 0.0f, 0.0f, Color.TRANSPARENT);
|
||||
paint.clearShadowLayer();
|
||||
paint.setTextScaleX(1.0f);
|
||||
|
||||
if (icon != null) {
|
||||
|
|
|
@ -74,6 +74,7 @@ import java.util.WeakHashMap;
|
|||
* @attr ref R.styleable#MainKeyboardView_autoCorrectionSpacebarLedIcon
|
||||
* @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextRatio
|
||||
* @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextColor
|
||||
* @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextShadowRadius
|
||||
* @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextShadowColor
|
||||
* @attr ref R.styleable#MainKeyboardView_spacebarBackground
|
||||
* @attr ref R.styleable#MainKeyboardView_languageOnSpacebarFinalAlpha
|
||||
|
@ -129,7 +130,9 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
private final float mLanguageOnSpacebarTextRatio;
|
||||
private float mLanguageOnSpacebarTextSize;
|
||||
private final int mLanguageOnSpacebarTextColor;
|
||||
private final float mLanguageOnSpacebarTextShadowRadius;
|
||||
private final int mLanguageOnSpacebarTextShadowColor;
|
||||
private static final float LANGUAGE_ON_SPACEBAR_TEXT_SHADOW_RADIUS_DISABLED = -1.0f;
|
||||
// The minimum x-scale to fit the language name on spacebar.
|
||||
private static final float MINIMUM_XSCALE_OF_LANGUAGE_NAME = 0.8f;
|
||||
// Stuff to draw auto correction LED on spacebar.
|
||||
|
@ -231,6 +234,9 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
R.styleable.MainKeyboardView_languageOnSpacebarTextRatio, 1, 1, 1.0f);
|
||||
mLanguageOnSpacebarTextColor = mainKeyboardViewAttr.getColor(
|
||||
R.styleable.MainKeyboardView_languageOnSpacebarTextColor, 0);
|
||||
mLanguageOnSpacebarTextShadowRadius = mainKeyboardViewAttr.getFloat(
|
||||
R.styleable.MainKeyboardView_languageOnSpacebarTextShadowRadius,
|
||||
LANGUAGE_ON_SPACEBAR_TEXT_SHADOW_RADIUS_DISABLED);
|
||||
mLanguageOnSpacebarTextShadowColor = mainKeyboardViewAttr.getColor(
|
||||
R.styleable.MainKeyboardView_languageOnSpacebarTextShadowColor, 0);
|
||||
mLanguageOnSpacebarFinalAlpha = mainKeyboardViewAttr.getInt(
|
||||
|
@ -948,12 +954,17 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
final float descent = paint.descent();
|
||||
final float textHeight = -paint.ascent() + descent;
|
||||
final float baseline = height / 2 + textHeight / 2;
|
||||
paint.setColor(mLanguageOnSpacebarTextShadowColor);
|
||||
paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
|
||||
canvas.drawText(language, width / 2, baseline - descent - 1, paint);
|
||||
if (mLanguageOnSpacebarTextShadowRadius > 0.0f) {
|
||||
paint.setShadowLayer(mLanguageOnSpacebarTextShadowRadius, 0, 0,
|
||||
mLanguageOnSpacebarTextShadowColor);
|
||||
} else {
|
||||
paint.clearShadowLayer();
|
||||
}
|
||||
paint.setColor(mLanguageOnSpacebarTextColor);
|
||||
paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
|
||||
canvas.drawText(language, width / 2, baseline - descent, paint);
|
||||
paint.clearShadowLayer();
|
||||
paint.setTextScaleX(1.0f);
|
||||
}
|
||||
|
||||
// Draw the spacebar icon at the bottom
|
||||
|
|
Loading…
Reference in New Issue