parent
2200dbbf09
commit
359c35e0f6
|
@ -36,6 +36,7 @@ import com.android.inputmethod.keyboard.Key;
|
||||||
import com.android.inputmethod.keyboard.Keyboard;
|
import com.android.inputmethod.keyboard.Keyboard;
|
||||||
import com.android.inputmethod.keyboard.KeyboardView;
|
import com.android.inputmethod.keyboard.KeyboardView;
|
||||||
import com.android.inputmethod.latin.CollectionUtils;
|
import com.android.inputmethod.latin.CollectionUtils;
|
||||||
|
import com.android.inputmethod.latin.CoordinateUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exposes a virtual view sub-tree for {@link KeyboardView} and generates
|
* Exposes a virtual view sub-tree for {@link KeyboardView} and generates
|
||||||
|
@ -62,7 +63,7 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider
|
||||||
private final Rect mTempBoundsInScreen = new Rect();
|
private final Rect mTempBoundsInScreen = new Rect();
|
||||||
|
|
||||||
/** The parent view's cached on-screen location. */
|
/** The parent view's cached on-screen location. */
|
||||||
private final int[] mParentLocation = new int[2];
|
private final int[] mParentLocation = CoordinateUtils.newInstance();
|
||||||
|
|
||||||
/** The virtual view identifier for the focused node. */
|
/** The virtual view identifier for the focused node. */
|
||||||
private int mAccessibilityFocusedView = UNDEFINED;
|
private int mAccessibilityFocusedView = UNDEFINED;
|
||||||
|
@ -180,7 +181,8 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider
|
||||||
|
|
||||||
// Calculate the key's in-screen bounds.
|
// Calculate the key's in-screen bounds.
|
||||||
mTempBoundsInScreen.set(boundsInParent);
|
mTempBoundsInScreen.set(boundsInParent);
|
||||||
mTempBoundsInScreen.offset(mParentLocation[0], mParentLocation[1]);
|
mTempBoundsInScreen.offset(
|
||||||
|
CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation));
|
||||||
|
|
||||||
final Rect boundsInScreen = mTempBoundsInScreen;
|
final Rect boundsInScreen = mTempBoundsInScreen;
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@ import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
|
||||||
import com.android.inputmethod.keyboard.internal.PreviewPlacerView;
|
import com.android.inputmethod.keyboard.internal.PreviewPlacerView;
|
||||||
import com.android.inputmethod.latin.CollectionUtils;
|
import com.android.inputmethod.latin.CollectionUtils;
|
||||||
import com.android.inputmethod.latin.Constants;
|
import com.android.inputmethod.latin.Constants;
|
||||||
|
import com.android.inputmethod.latin.CoordinateUtils;
|
||||||
import com.android.inputmethod.latin.LatinImeLogger;
|
import com.android.inputmethod.latin.LatinImeLogger;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
|
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
|
||||||
|
@ -134,7 +135,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
|
|
||||||
// Preview placer view
|
// Preview placer view
|
||||||
private final PreviewPlacerView mPreviewPlacerView;
|
private final PreviewPlacerView mPreviewPlacerView;
|
||||||
private final int[] mCoordinates = new int[2];
|
private final int[] mCoordinates = CoordinateUtils.newInstance();
|
||||||
|
|
||||||
// Key preview
|
// Key preview
|
||||||
private static final int PREVIEW_ALPHA = 240;
|
private static final int PREVIEW_ALPHA = 240;
|
||||||
|
@ -832,10 +833,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
// In transient state.
|
// In transient state.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final int[] viewOrigin = new int[2];
|
final int[] viewOrigin = CoordinateUtils.newInstance();
|
||||||
getLocationInWindow(viewOrigin);
|
getLocationInWindow(viewOrigin);
|
||||||
final DisplayMetrics dm = getResources().getDisplayMetrics();
|
final DisplayMetrics dm = getResources().getDisplayMetrics();
|
||||||
if (viewOrigin[1] < dm.heightPixels / 4) {
|
if (CoordinateUtils.y(viewOrigin) < dm.heightPixels / 4) {
|
||||||
// In transient state.
|
// In transient state.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -850,7 +851,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
Log.w(TAG, "Cannot find android.R.id.content view to add PreviewPlacerView");
|
Log.w(TAG, "Cannot find android.R.id.content view to add PreviewPlacerView");
|
||||||
} else {
|
} else {
|
||||||
windowContentView.addView(mPreviewPlacerView);
|
windowContentView.addView(mPreviewPlacerView);
|
||||||
mPreviewPlacerView.setKeyboardViewGeometry(viewOrigin[0], viewOrigin[1], width, height);
|
mPreviewPlacerView.setKeyboardViewGeometry(
|
||||||
|
CoordinateUtils.x(viewOrigin), CoordinateUtils.y(viewOrigin), width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -940,7 +942,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
// parent key. If it doesn't fit in this {@link KeyboardView}, it is moved inward to fit and
|
// parent key. If it doesn't fit in this {@link KeyboardView}, it is moved inward to fit and
|
||||||
// the left/right background is used if such background is specified.
|
// the left/right background is used if such background is specified.
|
||||||
final int statePosition;
|
final int statePosition;
|
||||||
int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
|
int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2
|
||||||
|
+ CoordinateUtils.x(mCoordinates);
|
||||||
if (previewX < 0) {
|
if (previewX < 0) {
|
||||||
previewX = 0;
|
previewX = 0;
|
||||||
statePosition = STATE_LEFT;
|
statePosition = STATE_LEFT;
|
||||||
|
@ -952,7 +955,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
||||||
}
|
}
|
||||||
// The key preview is placed vertically above the top edge of the parent key with an
|
// The key preview is placed vertically above the top edge of the parent key with an
|
||||||
// arbitrary offset.
|
// arbitrary offset.
|
||||||
final int previewY = key.mY - previewHeight + mPreviewOffset + mCoordinates[1];
|
final int previewY = key.mY - previewHeight + mPreviewOffset
|
||||||
|
+ CoordinateUtils.y(mCoordinates);
|
||||||
|
|
||||||
if (background != null) {
|
if (background != null) {
|
||||||
final int hasMoreKeys = (key.mMoreKeys != null) ? STATE_HAS_MOREKEYS : STATE_NORMAL;
|
final int hasMoreKeys = (key.mMoreKeys != null) ? STATE_HAS_MOREKEYS : STATE_NORMAL;
|
||||||
|
|
|
@ -26,6 +26,7 @@ import android.widget.PopupWindow;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
||||||
import com.android.inputmethod.latin.Constants;
|
import com.android.inputmethod.latin.Constants;
|
||||||
|
import com.android.inputmethod.latin.CoordinateUtils;
|
||||||
import com.android.inputmethod.latin.InputPointers;
|
import com.android.inputmethod.latin.InputPointers;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
|
||||||
|
@ -34,7 +35,7 @@ import com.android.inputmethod.latin.R;
|
||||||
* detecting key presses and touch movements.
|
* detecting key presses and touch movements.
|
||||||
*/
|
*/
|
||||||
public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel {
|
public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel {
|
||||||
private final int[] mCoordinates = new int[2];
|
private final int[] mCoordinates = CoordinateUtils.newInstance();
|
||||||
|
|
||||||
private final KeyDetector mKeyDetector;
|
private final KeyDetector mKeyDetector;
|
||||||
|
|
||||||
|
@ -169,7 +170,7 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys
|
||||||
window.setHeight(container.getMeasuredHeight());
|
window.setHeight(container.getMeasuredHeight());
|
||||||
parentView.getLocationInWindow(mCoordinates);
|
parentView.getLocationInWindow(mCoordinates);
|
||||||
window.showAtLocation(parentView, Gravity.NO_GRAVITY,
|
window.showAtLocation(parentView, Gravity.NO_GRAVITY,
|
||||||
x + mCoordinates[0], y + mCoordinates[1]);
|
x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));
|
||||||
|
|
||||||
mOriginX = x + container.getPaddingLeft();
|
mOriginX = x + container.getPaddingLeft();
|
||||||
mOriginY = y + container.getPaddingTop();
|
mOriginY = y + container.getPaddingTop();
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
|
public final class CoordinateUtils {
|
||||||
|
private static final int INDEX_X = 0;
|
||||||
|
private static final int INDEX_Y = 1;
|
||||||
|
private static final int ARRAY_SIZE = INDEX_Y + 1;
|
||||||
|
|
||||||
|
private CoordinateUtils() {
|
||||||
|
// This utility class is not publicly instantiable.
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int[] newInstance() {
|
||||||
|
return new int[ARRAY_SIZE];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int x(final int[] coords) {
|
||||||
|
return coords[INDEX_X];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int y(final int[] coords) {
|
||||||
|
return coords[INDEX_Y];
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,6 +34,7 @@ import com.android.inputmethod.keyboard.PointerTracker;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
|
import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
|
||||||
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
||||||
|
import com.android.inputmethod.latin.CoordinateUtils;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,7 +42,7 @@ import com.android.inputmethod.latin.R;
|
||||||
* key presses and touch movements.
|
* key presses and touch movements.
|
||||||
*/
|
*/
|
||||||
public final class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
public final class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
||||||
private final int[] mCoordinates = new int[2];
|
private final int[] mCoordinates = CoordinateUtils.newInstance();
|
||||||
|
|
||||||
final KeyDetector mModalPanelKeyDetector;
|
final KeyDetector mModalPanelKeyDetector;
|
||||||
private final KeyDetector mSlidingPanelKeyDetector;
|
private final KeyDetector mSlidingPanelKeyDetector;
|
||||||
|
@ -163,7 +164,7 @@ public final class MoreSuggestionsView extends KeyboardView implements MoreKeysP
|
||||||
window.setHeight(container.getMeasuredHeight());
|
window.setHeight(container.getMeasuredHeight());
|
||||||
parentView.getLocationInWindow(mCoordinates);
|
parentView.getLocationInWindow(mCoordinates);
|
||||||
window.showAtLocation(parentView, Gravity.NO_GRAVITY,
|
window.showAtLocation(parentView, Gravity.NO_GRAVITY,
|
||||||
x + mCoordinates[0], y + mCoordinates[1]);
|
x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));
|
||||||
|
|
||||||
mOriginX = x + container.getPaddingLeft();
|
mOriginX = x + container.getPaddingLeft();
|
||||||
mOriginY = y + container.getPaddingTop();
|
mOriginY = y + container.getPaddingTop();
|
||||||
|
|
Loading…
Reference in New Issue