diff options
author | 2012-09-05 19:03:02 +0900 | |
---|---|---|
committer | 2012-09-06 12:29:57 +0900 | |
commit | 71e2e8152f1f9a6b91108d578b3cf7b2d57b53d2 (patch) | |
tree | 4b65183088fe0edb4a9580182eb90600d49ee14d /java | |
parent | 8a599c420ead9e653d9a47530e56105ff2f6a247 (diff) | |
download | latinime-71e2e8152f1f9a6b91108d578b3cf7b2d57b53d2.tar.gz latinime-71e2e8152f1f9a6b91108d578b3cf7b2d57b53d2.tar.xz latinime-71e2e8152f1f9a6b91108d578b3cf7b2d57b53d2.zip |
Revise gesture floating preview design
Bug: 7043127
Change-Id: Ibf9a6d57279263d9b60753e0eb734b658eeda9f2
Diffstat (limited to 'java')
-rw-r--r-- | java/res/values-land/dimens.xml | 6 | ||||
-rw-r--r-- | java/res/values-sw600dp-land/dimens.xml | 6 | ||||
-rw-r--r-- | java/res/values-sw600dp/dimens.xml | 9 | ||||
-rw-r--r-- | java/res/values-sw768dp-land/dimens.xml | 6 | ||||
-rw-r--r-- | java/res/values-sw768dp/dimens.xml | 9 | ||||
-rw-r--r-- | java/res/values/attrs.xml | 10 | ||||
-rw-r--r-- | java/res/values/dimens.xml | 13 | ||||
-rw-r--r-- | java/res/values/styles.xml | 12 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/KeyboardView.java | 10 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java | 116 |
10 files changed, 109 insertions, 88 deletions
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index a1546f11d..fdd94347d 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -73,4 +73,10 @@ <dimen name="more_keys_keyboard_slide_allowance">53.76dp</dimen> <!-- popup_key_height x -1.0 --> <dimen name="more_keys_keyboard_vertical_correction">-44.8dp</dimen> + + <!-- Gesture floating preview text parameters --> + <dimen name="gesture_floating_preview_text_size">23dp</dimen> + <dimen name="gesture_floating_preview_text_offset">54dp</dimen> + <dimen name="gesture_floating_preview_horizontal_padding">23dp</dimen> + <dimen name="gesture_floating_preview_vertical_padding">15dp</dimen> </resources> diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml index 9664bf9ed..51c710fa4 100644 --- a/java/res/values-sw600dp-land/dimens.xml +++ b/java/res/values-sw600dp-land/dimens.xml @@ -61,4 +61,10 @@ <dimen name="suggestions_strip_padding">252.0dp</dimen> <integer name="max_more_suggestions_row">5</integer> <fraction name="min_more_suggestions_width">50%</fraction> + + <!-- Gesture floating preview text parameters --> + <dimen name="gesture_floating_preview_text_size">26dp</dimen> + <dimen name="gesture_floating_preview_text_offset">76dp</dimen> + <dimen name="gesture_floating_preview_horizontal_padding">26dp</dimen> + <dimen name="gesture_floating_preview_vertical_padding">17dp</dimen> </resources> diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml index e608f7d7b..586fbe6da 100644 --- a/java/res/values-sw600dp/dimens.xml +++ b/java/res/values-sw600dp/dimens.xml @@ -84,4 +84,13 @@ <dimen name="suggestion_padding">12dp</dimen> <dimen name="suggestion_text_size">22dp</dimen> <dimen name="more_suggestions_hint_text_size">33dp</dimen> + + <!-- Gesture preview trail parameters --> + <dimen name="gesture_preview_trail_width">2.5dp</dimen> + <!-- Gesture floating preview text parameters --> + <dimen name="gesture_floating_preview_text_size">28dp</dimen> + <dimen name="gesture_floating_preview_text_offset">87dp</dimen> + <dimen name="gesture_floating_preview_horizontal_padding">28dp</dimen> + <dimen name="gesture_floating_preview_vertical_padding">19dp</dimen> + <dimen name="gesture_floating_preview_round_radius">3dp</dimen> </resources> diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml index 511217068..f4a57ffb0 100644 --- a/java/res/values-sw768dp-land/dimens.xml +++ b/java/res/values-sw768dp-land/dimens.xml @@ -64,4 +64,10 @@ <dimen name="suggestions_strip_padding">252.0dp</dimen> <fraction name="min_more_suggestions_width">50%</fraction> + + <!-- Gesture floating preview text parameters --> + <dimen name="gesture_floating_preview_text_size">32dp</dimen> + <dimen name="gesture_floating_preview_text_offset">100dp</dimen> + <dimen name="gesture_floating_preview_horizontal_padding">32dp</dimen> + <dimen name="gesture_floating_preview_vertical_padding">21dp</dimen> </resources> diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml index ec9d75988..2fd732293 100644 --- a/java/res/values-sw768dp/dimens.xml +++ b/java/res/values-sw768dp/dimens.xml @@ -85,4 +85,13 @@ <dimen name="suggestion_padding">8dp</dimen> <dimen name="suggestion_text_size">22dp</dimen> <dimen name="more_suggestions_hint_text_size">33dp</dimen> + + <!-- Gesture preview trail parameters --> + <dimen name="gesture_preview_trail_width">2.5dp</dimen> + <!-- Gesture floating preview text parameters --> + <dimen name="gesture_floating_preview_text_size">26dp</dimen> + <dimen name="gesture_floating_preview_text_offset">86dp</dimen> + <dimen name="gesture_floating_preview_horizontal_padding">26dp</dimen> + <dimen name="gesture_floating_preview_vertical_padding">17dp</dimen> + <dimen name="gesture_floating_preview_round_radius">3dp</dimen> </resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 05c53a40e..e60139704 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -77,12 +77,10 @@ <attr name="gestureFloatingPreviewTextSize" format="dimension" /> <attr name="gestureFloatingPreviewTextColor" format="color" /> <attr name="gestureFloatingPreviewTextOffset" format="dimension" /> - <attr name="gestureFloatingPreviewTextShadingColor" format="color" /> - <attr name="gestureFloatingPreviewTextShadingBorder" format="dimension" /> - <attr name="gestureFloatingPreviewTextShadowColor" format="color" /> - <attr name="gestureFloatingPreviewTextShadowBorder" format="dimension" /> - <attr name="gestureFloatingPreviewTextConnectorColor" format="color" /> - <attr name="gestureFloatingPreviewTextConnectorWidth" format="dimension" /> + <attr name="gestureFloatingPreviewColor" format="color" /> + <attr name="gestureFloatingPreviewHorizontalPadding" format="dimension" /> + <attr name="gestureFloatingPreviewVerticalPadding" format="dimension" /> + <attr name="gestureFloatingPreviewRoundRadius" format="dimension" /> <!-- Delay after gesture input and gesture floating preview text dismissing in millisecond --> <attr name="gestureFloatingPreviewTextLingerTimeout" format="integer" /> <!-- Delay after gesture trail starts fading out in millisecond. --> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index aa16c7770..9ccaaaf4e 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -99,13 +99,14 @@ <integer name="suggestions_count_in_strip">3</integer> <fraction name="center_suggestion_percentile">36%</fraction> - <!-- Gesture preview parameters --> + <!-- Gesture preview trail parameters --> <dimen name="gesture_preview_trail_width">2.5dp</dimen> - <dimen name="gesture_floating_preview_text_size">35dp</dimen> - <dimen name="gesture_floating_preview_text_offset">75dp</dimen> - <dimen name="gesture_floating_preview_text_shadow_border">17.5dp</dimen> - <dimen name="gesture_floating_preview_text_shading_border">7.5dp</dimen> - <dimen name="gesture_floating_preview_text_connector_width">1.0dp</dimen> + <!-- Gesture floating preview text parameters --> + <dimen name="gesture_floating_preview_text_size">24dp</dimen> + <dimen name="gesture_floating_preview_text_offset">73dp</dimen> + <dimen name="gesture_floating_preview_horizontal_padding">24dp</dimen> + <dimen name="gesture_floating_preview_vertical_padding">16dp</dimen> + <dimen name="gesture_floating_preview_round_radius">3dp</dimen> <!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. --> <dimen name="accessibility_edge_slop">8dp</dimen> diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml index 40f1ff3f4..94fdbeb53 100644 --- a/java/res/values/styles.xml +++ b/java/res/values/styles.xml @@ -66,14 +66,12 @@ <item name="backgroundDimAlpha">128</item> <!-- android:color/holo_blue_light=#FF33B5E5 --> <item name="gestureFloatingPreviewTextSize">@dimen/gesture_floating_preview_text_size</item> - <item name="gestureFloatingPreviewTextColor">@android:color/white</item> + <item name="gestureFloatingPreviewTextColor">@android:color/holo_blue_light</item> <item name="gestureFloatingPreviewTextOffset">@dimen/gesture_floating_preview_text_offset</item> - <item name="gestureFloatingPreviewTextShadingColor">@android:color/holo_blue_light</item> - <item name="gestureFloatingPreviewTextShadingBorder">@dimen/gesture_floating_preview_text_shading_border</item> - <item name="gestureFloatingPreviewTextShadowColor">#FF252525</item> - <item name="gestureFloatingPreviewTextShadowBorder">@dimen/gesture_floating_preview_text_shadow_border</item> - <item name="gestureFloatingPreviewTextConnectorColor">@android:color/white</item> - <item name="gestureFloatingPreviewTextConnectorWidth">@dimen/gesture_floating_preview_text_connector_width</item> + <item name="gestureFloatingPreviewColor">#C0000000</item> + <item name="gestureFloatingPreviewHorizontalPadding">@dimen/gesture_floating_preview_horizontal_padding</item> + <item name="gestureFloatingPreviewVerticalPadding">@dimen/gesture_floating_preview_vertical_padding</item> + <item name="gestureFloatingPreviewRoundRadius">@dimen/gesture_floating_preview_round_radius</item> <item name="gestureFloatingPreviewTextLingerTimeout">@integer/config_gesture_floating_preview_text_linger_timeout</item> <item name="gesturePreviewTrailFadeoutStartDelay">@integer/config_gesture_preview_trail_fadeout_start_delay</item> <item name="gesturePreviewTrailFadeoutDuration">@integer/config_gesture_preview_trail_fadeout_duration</item> diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index ce7d79778..db3a7b1e9 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -71,12 +71,10 @@ import java.util.HashSet; * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextSize * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextColor * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextOffset - * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextShadingColor - * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextShadingBorder - * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextShadowColor - * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextShadowBorder - * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextConnectorColor - * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextConnectorWidth + * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewColor + * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewHorizontalPadding + * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewVerticalPadding + * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewRoundRadius * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextLingerTimeout * @attr ref R.styleable#KeyboardView_gesturePreviewTrailFadeoutStartDelay * @attr ref R.styleable#KeyboardView_gesturePreviewTrailFadeoutDuration diff --git a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java index 269b202b5..641fadf6d 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java @@ -21,6 +21,8 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Align; +import android.graphics.Rect; +import android.graphics.RectF; import android.os.Message; import android.text.TextUtils; import android.util.AttributeSet; @@ -38,12 +40,10 @@ public class PreviewPlacerView extends RelativeLayout { private final Paint mTextPaint; private final int mGestureFloatingPreviewTextColor; private final int mGestureFloatingPreviewTextOffset; - private final int mGestureFloatingPreviewTextShadowColor; - private final int mGestureFloatingPreviewTextShadowBorder; - private final int mGestureFloatingPreviewTextShadingColor; - private final int mGestureFloatingPreviewTextShadingBorder; - private final int mGestureFloatingPreviewTextConnectorColor; - private final int mGestureFloatingPreviewTextConnectorWidth; + private final int mGestureFloatingPreviewColor; + private final float mGestureFloatingPreviewHorizontalPadding; + private final float mGestureFloatingPreviewVerticalPadding; + private final float mGestureFloatingPreviewRoundRadius; /* package */ final int mGestureFloatingPreviewTextLingerTimeout; private int mXOrigin; @@ -54,8 +54,12 @@ public class PreviewPlacerView extends RelativeLayout { private final GesturePreviewTrailParams mGesturePreviewTrailParams; private String mGestureFloatingPreviewText; + private final int mGestureFloatingPreviewTextHeight; + // {@link RectF} is needed for {@link Canvas#drawRoundRect(RectF, float, float, Paint)}. + private final RectF mGestureFloatingPreviewRectangle = new RectF(); private int mLastPointerX; private int mLastPointerY; + private static final char[] TEXT_HEIGHT_REFERENCE_CHAR = { 'M' }; private boolean mDrawsGesturePreviewTrail; private boolean mDrawsGestureFloatingPreviewText; @@ -132,18 +136,14 @@ public class PreviewPlacerView extends RelativeLayout { R.styleable.KeyboardView_gestureFloatingPreviewTextColor, 0); mGestureFloatingPreviewTextOffset = keyboardViewAttr.getDimensionPixelOffset( R.styleable.KeyboardView_gestureFloatingPreviewTextOffset, 0); - mGestureFloatingPreviewTextShadowColor = keyboardViewAttr.getColor( - R.styleable.KeyboardView_gestureFloatingPreviewTextShadowColor, 0); - mGestureFloatingPreviewTextShadowBorder = keyboardViewAttr.getDimensionPixelSize( - R.styleable.KeyboardView_gestureFloatingPreviewTextShadowBorder, 0); - mGestureFloatingPreviewTextShadingColor = keyboardViewAttr.getColor( - R.styleable.KeyboardView_gestureFloatingPreviewTextShadingColor, 0); - mGestureFloatingPreviewTextShadingBorder = keyboardViewAttr.getDimensionPixelSize( - R.styleable.KeyboardView_gestureFloatingPreviewTextShadingBorder, 0); - mGestureFloatingPreviewTextConnectorColor = keyboardViewAttr.getColor( - R.styleable.KeyboardView_gestureFloatingPreviewTextConnectorColor, 0); - mGestureFloatingPreviewTextConnectorWidth = keyboardViewAttr.getDimensionPixelSize( - R.styleable.KeyboardView_gestureFloatingPreviewTextConnectorWidth, 0); + mGestureFloatingPreviewColor = keyboardViewAttr.getColor( + R.styleable.KeyboardView_gestureFloatingPreviewColor, 0); + mGestureFloatingPreviewHorizontalPadding = keyboardViewAttr.getDimension( + R.styleable.KeyboardView_gestureFloatingPreviewHorizontalPadding, 0.0f); + mGestureFloatingPreviewVerticalPadding = keyboardViewAttr.getDimension( + R.styleable.KeyboardView_gestureFloatingPreviewVerticalPadding, 0.0f); + mGestureFloatingPreviewRoundRadius = keyboardViewAttr.getDimension( + R.styleable.KeyboardView_gestureFloatingPreviewRoundRadius, 0.0f); mGestureFloatingPreviewTextLingerTimeout = keyboardViewAttr.getInt( R.styleable.KeyboardView_gestureFloatingPreviewTextLingerTimeout, 0); final int gesturePreviewTrailColor = keyboardViewAttr.getColor( @@ -155,18 +155,23 @@ public class PreviewPlacerView extends RelativeLayout { mDrawingHandler = new DrawingHandler(this, mGesturePreviewTrailParams); - mGesturePaint = new Paint(); - mGesturePaint.setAntiAlias(true); - mGesturePaint.setStyle(Paint.Style.STROKE); - mGesturePaint.setStrokeJoin(Paint.Join.ROUND); - mGesturePaint.setColor(gesturePreviewTrailColor); - mGesturePaint.setStrokeWidth(gesturePreviewTrailWidth); - - mTextPaint = new Paint(); - mTextPaint.setAntiAlias(true); - mTextPaint.setStrokeJoin(Paint.Join.ROUND); - mTextPaint.setTextAlign(Align.CENTER); - mTextPaint.setTextSize(gestureFloatingPreviewTextSize); + final Paint gesturePaint = new Paint(); + gesturePaint.setAntiAlias(true); + gesturePaint.setStyle(Paint.Style.STROKE); + gesturePaint.setStrokeJoin(Paint.Join.ROUND); + gesturePaint.setColor(gesturePreviewTrailColor); + gesturePaint.setStrokeWidth(gesturePreviewTrailWidth); + mGesturePaint = gesturePaint; + + final Paint textPaint = new Paint(); + textPaint.setAntiAlias(true); + textPaint.setStyle(Paint.Style.FILL); + textPaint.setTextAlign(Align.CENTER); + textPaint.setTextSize(gestureFloatingPreviewTextSize); + mTextPaint = textPaint; + final Rect textRect = new Rect(); + textPaint.getTextBounds(TEXT_HEIGHT_REFERENCE_CHAR, 0, 1, textRect); + mGestureFloatingPreviewTextHeight = textRect.height(); } public void setOrigin(final int x, final int y) { @@ -242,45 +247,30 @@ public class PreviewPlacerView extends RelativeLayout { } final Paint paint = mTextPaint; + final RectF rectangle = mGestureFloatingPreviewRectangle; // TODO: Figure out how we should deal with the floating preview text with multiple moving // fingers. - final int lastX = mLastPointerX; - final int lastY = mLastPointerY; - final int textSize = (int)paint.getTextSize(); - final int canvasWidth = canvas.getWidth(); - - final int halfTextWidth = (int)paint.measureText(gestureFloatingPreviewText) / 2 + textSize; - final int textX = Math.min(Math.max(lastX, halfTextWidth), canvasWidth - halfTextWidth); - - int textY = Math.max(-textSize, lastY - mGestureFloatingPreviewTextOffset); - if (textY < 0) { - // Paint black text shadow if preview extends above keyboard region. - paint.setStyle(Paint.Style.FILL_AND_STROKE); - paint.setColor(mGestureFloatingPreviewTextShadowColor); - paint.setStrokeWidth(mGestureFloatingPreviewTextShadowBorder); - canvas.drawText(gestureFloatingPreviewText, textX, textY, paint); - } - // Paint the vertical line connecting the touch point to the preview text. - paint.setStyle(Paint.Style.STROKE); - paint.setColor(mGestureFloatingPreviewTextConnectorColor); - paint.setStrokeWidth(mGestureFloatingPreviewTextConnectorWidth); - final int lineTopY = textY - textSize / 4; - canvas.drawLine(lastX, lastY, lastX, lineTopY, paint); - if (lastX != textX) { - // Paint the horizontal line connection the touch point to the preview text. - canvas.drawLine(lastX, lineTopY, textX, lineTopY, paint); - } - - // Paint the shading for the text preview - paint.setStyle(Paint.Style.FILL_AND_STROKE); - paint.setColor(mGestureFloatingPreviewTextShadingColor); - paint.setStrokeWidth(mGestureFloatingPreviewTextShadingBorder); - canvas.drawText(gestureFloatingPreviewText, textX, textY, paint); + // Paint the round rectangle background. + final int textHeight = mGestureFloatingPreviewTextHeight; + final float textWidth = paint.measureText(gestureFloatingPreviewText); + final float hPad = mGestureFloatingPreviewHorizontalPadding; + final float vPad = mGestureFloatingPreviewVerticalPadding; + final float rectWidth = textWidth + hPad * 2.0f; + final float rectHeight = textHeight + vPad * 2.0f; + final int canvasWidth = canvas.getWidth(); + final float rectX = Math.min(Math.max(mLastPointerX - rectWidth / 2.0f, 0.0f), + canvasWidth - rectWidth); + final float rectY = mLastPointerY - mGestureFloatingPreviewTextOffset - rectHeight; + rectangle.set(rectX, rectY, rectX + rectWidth, rectY + rectHeight); + final float round = mGestureFloatingPreviewRoundRadius; + paint.setColor(mGestureFloatingPreviewColor); + canvas.drawRoundRect(rectangle, round, round, paint); // Paint the text preview paint.setColor(mGestureFloatingPreviewTextColor); - paint.setStyle(Paint.Style.FILL); + final float textX = rectX + hPad + textWidth / 2.0f; + final float textY = rectY + vPad + textHeight; canvas.drawText(gestureFloatingPreviewText, textX, textY, paint); } } |