Refactor key preview related code in KeyboardView
Change-Id: Ib8f08cb4f5e03d0c32c32a0ea0363ce3d72fc050main
parent
a0efebf304
commit
3f2653ba60
|
@ -118,6 +118,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
|
||||||
private int mPopupPreviewDisplayedY;
|
private int mPopupPreviewDisplayedY;
|
||||||
private final int mDelayBeforePreview;
|
private final int mDelayBeforePreview;
|
||||||
private final int mDelayAfterPreview;
|
private final int mDelayAfterPreview;
|
||||||
|
private ViewGroup mPreviewPlacer;
|
||||||
|
|
||||||
// Popup mini keyboard
|
// Popup mini keyboard
|
||||||
private PopupWindow mMiniKeyboardPopup;
|
private PopupWindow mMiniKeyboardPopup;
|
||||||
|
@ -898,22 +899,35 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Introduce minimum duration for displaying key previews
|
private void addKeyPreview(TextView keyPreview) {
|
||||||
// TODO: Display up to two key previews when the user presses two keys at the same time
|
ViewGroup placer = mPreviewPlacer;
|
||||||
private void showKey(final int keyIndex, PointerTracker tracker) {
|
if (placer == null) {
|
||||||
// If the preview popup has no parent view yet, add it to the screen FrameLayout.
|
final FrameLayout screenContent = (FrameLayout) getRootView().findViewById(
|
||||||
if (mPreviewText.getParent() == null) {
|
android.R.id.content);
|
||||||
final FrameLayout screenContent = (FrameLayout) getRootView()
|
|
||||||
.findViewById(android.R.id.content);
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= /* HONEYCOMB */11) {
|
if (android.os.Build.VERSION.SDK_INT >= /* HONEYCOMB */11) {
|
||||||
screenContent.addView(mPreviewText, new FrameLayout.LayoutParams(0, 0));
|
placer = screenContent;
|
||||||
} else {
|
} else {
|
||||||
// Insert LinearLayout to be able to setMargin because pre-Honeycomb FrameLayout
|
// Insert LinearLayout to be able to setMargin because pre-Honeycomb FrameLayout
|
||||||
// could not handle setMargin properly.
|
// could not handle setMargin properly.
|
||||||
final LinearLayout placer = new LinearLayout(getContext());
|
placer = new LinearLayout(getContext());
|
||||||
screenContent.addView(placer);
|
screenContent.addView(placer);
|
||||||
placer.addView(mPreviewText, new LinearLayout.LayoutParams(0, 0));
|
|
||||||
}
|
}
|
||||||
|
mPreviewPlacer = placer;
|
||||||
|
}
|
||||||
|
if (placer instanceof FrameLayout) {
|
||||||
|
placer.addView(keyPreview, new FrameLayout.LayoutParams(0, 0));
|
||||||
|
} else {
|
||||||
|
placer.addView(keyPreview, new LinearLayout.LayoutParams(0, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Introduce minimum duration for displaying key previews
|
||||||
|
// TODO: Display up to two key previews when the user presses two keys at the same time
|
||||||
|
private void showKey(final int keyIndex, PointerTracker tracker) {
|
||||||
|
// If the preview popup has no parent view yet, add it to the ViewGroup which can place
|
||||||
|
// key preview absolutely in SoftInputWindow.
|
||||||
|
if (mPreviewText.getParent() == null) {
|
||||||
|
addKeyPreview(mPreviewText);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Key key = tracker.getKey(keyIndex);
|
final Key key = tracker.getKey(keyIndex);
|
||||||
|
|
Loading…
Reference in New Issue