am d2bc850c
: am 908a2f63
: Merge "Special handling of one key mini-keyboard to mitigate visual flicker" into ics-mr0
* commit 'd2bc850c4c60dbb70e1a5edcf7f4dc4c64752fa2': Special handling of one key mini-keyboard to mitigate visual flicker
This commit is contained in:
commit
24c8f03d27
7 changed files with 101 additions and 6 deletions
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2011, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<dimen name="keyboard_key_feedback_background_holo_width">46.67dp</dimen>
|
||||||
|
<dimen name="keyboard_key_feedback_background_holo_height">58.67dp</dimen>
|
||||||
|
</resources>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2011, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<dimen name="keyboard_key_feedback_background_holo_width">46dp</dimen>
|
||||||
|
<dimen name="keyboard_key_feedback_background_holo_height">58dp</dimen>
|
||||||
|
</resources>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2011, The Android Open Source Project
|
||||||
|
**
|
||||||
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
** you may not use this file except in compliance with the License.
|
||||||
|
** You may obtain a copy of the License at
|
||||||
|
**
|
||||||
|
** http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
**
|
||||||
|
** Unless required by applicable law or agreed to in writing, software
|
||||||
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
** See the License for the specific language governing permissions and
|
||||||
|
** limitations under the License.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<dimen name="keyboard_key_feedback_background_holo_width">47dp</dimen>
|
||||||
|
<dimen name="keyboard_key_feedback_background_holo_height">57dp</dimen>
|
||||||
|
</resources>
|
|
@ -88,6 +88,10 @@
|
||||||
<attr name="keyPreviewLeftBackground" format="reference" />
|
<attr name="keyPreviewLeftBackground" format="reference" />
|
||||||
<!-- The background for the right edge key press feedback. -->
|
<!-- The background for the right edge key press feedback. -->
|
||||||
<attr name="keyPreviewRightBackground" format="reference" />
|
<attr name="keyPreviewRightBackground" format="reference" />
|
||||||
|
<!-- The width of rectangle part of the key press feedback background. -->
|
||||||
|
<attr name="keyPreviewBackgroundWidth" format="dimension" />
|
||||||
|
<!-- The height of rectangle part of the key press feedback background. -->
|
||||||
|
<attr name="keyPreviewBackgroundHeight" format="dimension" />
|
||||||
<!-- The text color for key press feedback. -->
|
<!-- The text color for key press feedback. -->
|
||||||
<attr name="keyPreviewTextColor" format="color" />
|
<attr name="keyPreviewTextColor" format="color" />
|
||||||
<!-- Vertical offset of the key press feedback from the key. -->
|
<!-- Vertical offset of the key press feedback from the key. -->
|
||||||
|
|
|
@ -259,6 +259,8 @@
|
||||||
<item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
|
<item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
|
||||||
<item name="keyPreviewLeftBackground">@drawable/keyboard_key_feedback_left_ics</item>
|
<item name="keyPreviewLeftBackground">@drawable/keyboard_key_feedback_left_ics</item>
|
||||||
<item name="keyPreviewRightBackground">@drawable/keyboard_key_feedback_right_ics</item>
|
<item name="keyPreviewRightBackground">@drawable/keyboard_key_feedback_right_ics</item>
|
||||||
|
<item name="keyPreviewBackgroundWidth">@dimen/keyboard_key_feedback_background_holo_width</item>
|
||||||
|
<item name="keyPreviewBackgroundHeight">@dimen/keyboard_key_feedback_background_holo_height</item>
|
||||||
<item name="keyPreviewTextColor">#FFFFFFFF</item>
|
<item name="keyPreviewTextColor">#FFFFFFFF</item>
|
||||||
<item name="keyPreviewHeight">@dimen/key_preview_height_ics</item>
|
<item name="keyPreviewHeight">@dimen/key_preview_height_ics</item>
|
||||||
<item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
|
<item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
|
|
||||||
// Key preview
|
// Key preview
|
||||||
private final int mKeyPreviewLayoutId;
|
private final int mKeyPreviewLayoutId;
|
||||||
private final KeyPreviewDrawParams mKeyPreviewDrawParams;
|
protected final KeyPreviewDrawParams mKeyPreviewDrawParams;
|
||||||
private boolean mShowKeyPreviewPopup = true;
|
private boolean mShowKeyPreviewPopup = true;
|
||||||
private final int mDelayBeforePreview;
|
private final int mDelayBeforePreview;
|
||||||
private int mDelayAfterPreview;
|
private int mDelayAfterPreview;
|
||||||
|
@ -284,11 +284,13 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class KeyPreviewDrawParams {
|
protected static class KeyPreviewDrawParams {
|
||||||
// XML attributes.
|
// XML attributes.
|
||||||
public final Drawable mPreviewBackground;
|
public final Drawable mPreviewBackground;
|
||||||
public final Drawable mPreviewLeftBackground;
|
public final Drawable mPreviewLeftBackground;
|
||||||
public final Drawable mPreviewRightBackground;
|
public final Drawable mPreviewRightBackground;
|
||||||
|
public final int mPreviewBackgroundWidth;
|
||||||
|
public final int mPreviewBackgroundHeight;
|
||||||
public final int mPreviewTextColor;
|
public final int mPreviewTextColor;
|
||||||
public final int mPreviewOffset;
|
public final int mPreviewOffset;
|
||||||
public final int mPreviewHeight;
|
public final int mPreviewHeight;
|
||||||
|
@ -312,6 +314,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
setAlpha(mPreviewBackground, PREVIEW_ALPHA);
|
setAlpha(mPreviewBackground, PREVIEW_ALPHA);
|
||||||
setAlpha(mPreviewLeftBackground, PREVIEW_ALPHA);
|
setAlpha(mPreviewLeftBackground, PREVIEW_ALPHA);
|
||||||
setAlpha(mPreviewRightBackground, PREVIEW_ALPHA);
|
setAlpha(mPreviewRightBackground, PREVIEW_ALPHA);
|
||||||
|
mPreviewBackgroundWidth = a.getDimensionPixelSize(
|
||||||
|
R.styleable.KeyboardView_keyPreviewBackgroundWidth, 0);
|
||||||
|
mPreviewBackgroundHeight = a.getDimensionPixelSize(
|
||||||
|
R.styleable.KeyboardView_keyPreviewBackgroundHeight, 0);
|
||||||
mPreviewOffset = a.getDimensionPixelOffset(
|
mPreviewOffset = a.getDimensionPixelOffset(
|
||||||
R.styleable.KeyboardView_keyPreviewOffset, 0);
|
R.styleable.KeyboardView_keyPreviewOffset, 0);
|
||||||
mPreviewHeight = a.getDimensionPixelSize(
|
mPreviewHeight = a.getDimensionPixelSize(
|
||||||
|
|
|
@ -215,10 +215,21 @@ public class MiniKeyboard extends Keyboard {
|
||||||
mParams.mIsRtlKeyboard = parentKeyboard.mIsRtlKeyboard;
|
mParams.mIsRtlKeyboard = parentKeyboard.mIsRtlKeyboard;
|
||||||
mMoreKeys = parentKey.mMoreKeys;
|
mMoreKeys = parentKey.mMoreKeys;
|
||||||
|
|
||||||
final int keyWidth = getMaxKeyWidth(view, mMoreKeys, mParams.mDefaultKeyWidth);
|
final int previewWidth = view.mKeyPreviewDrawParams.mPreviewBackgroundWidth;
|
||||||
mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn,
|
final int previewHeight = view.mKeyPreviewDrawParams.mPreviewBackgroundHeight;
|
||||||
keyWidth, parentKeyboard.mMostCommonKeyHeight, parentKey.mX
|
final int width, height;
|
||||||
+ (mParams.mDefaultKeyWidth - keyWidth) / 2, view.getMeasuredWidth());
|
// Use pre-computed width and height if these values are available and mini keyboard
|
||||||
|
// has only one key to mitigate visual flicker between key preview and mini keyboard.
|
||||||
|
if (view.isKeyPreviewPopupEnabled() && mMoreKeys.length == 1 && previewWidth > 0
|
||||||
|
&& previewHeight > 0) {
|
||||||
|
width = previewWidth;
|
||||||
|
height = previewHeight + mParams.mVerticalGap;
|
||||||
|
} else {
|
||||||
|
width = getMaxKeyWidth(view, parentKey.mMoreKeys, mParams.mDefaultKeyWidth);
|
||||||
|
height = parentKeyboard.mMostCommonKeyHeight;
|
||||||
|
}
|
||||||
|
mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn, width, height,
|
||||||
|
parentKey.mX + (mParams.mDefaultKeyWidth - width) / 2, view.getMeasuredWidth());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getMaxKeyWidth(KeyboardView view, CharSequence[] moreKeys,
|
private static int getMaxKeyWidth(KeyboardView view, CharSequence[] moreKeys,
|
||||||
|
|
Loading…
Reference in a new issue