diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
index b9b6362fccc97f1bf360869b16c2f98c94b996df..0ab84f7b5c1de2060a325b7fa160310644ad605c 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
@@ -36,6 +36,7 @@ import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.keyboard.KeyboardView;
 import com.android.inputmethod.latin.CollectionUtils;
+import com.android.inputmethod.latin.CoordinateUtils;
 
 /**
  * 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();
 
     /** 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. */
     private int mAccessibilityFocusedView = UNDEFINED;
@@ -180,7 +181,8 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider
 
             // Calculate the key's in-screen bounds.
             mTempBoundsInScreen.set(boundsInParent);
-            mTempBoundsInScreen.offset(mParentLocation[0], mParentLocation[1]);
+            mTempBoundsInScreen.offset(
+                    CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation));
 
             final Rect boundsInScreen = mTempBoundsInScreen;
 
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 472f74b127dfe73644c9a3dd8b20d4062f7df6fd..d7cb5aa923f21f1d7c28a07762163a8796e7f6ca 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -45,6 +45,7 @@ import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
 import com.android.inputmethod.keyboard.internal.PreviewPlacerView;
 import com.android.inputmethod.latin.CollectionUtils;
 import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.CoordinateUtils;
 import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
@@ -134,7 +135,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
 
     // Preview placer view
     private final PreviewPlacerView mPreviewPlacerView;
-    private final int[] mCoordinates = new int[2];
+    private final int[] mCoordinates = CoordinateUtils.newInstance();
 
     // Key preview
     private static final int PREVIEW_ALPHA = 240;
@@ -832,10 +833,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
             // In transient state.
             return;
         }
-        final int[] viewOrigin = new int[2];
+        final int[] viewOrigin = CoordinateUtils.newInstance();
         getLocationInWindow(viewOrigin);
         final DisplayMetrics dm = getResources().getDisplayMetrics();
-        if (viewOrigin[1] < dm.heightPixels / 4) {
+        if (CoordinateUtils.y(viewOrigin) < dm.heightPixels / 4) {
             // In transient state.
             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");
         } else {
             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
         // the left/right background is used if such background is specified.
         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) {
             previewX = 0;
             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
         // arbitrary offset.
-        final int previewY = key.mY - previewHeight + mPreviewOffset + mCoordinates[1];
+        final int previewY = key.mY - previewHeight + mPreviewOffset
+                + CoordinateUtils.y(mCoordinates);
 
         if (background != null) {
             final int hasMoreKeys = (key.mMoreKeys != null) ? STATE_HAS_MOREKEYS : STATE_NORMAL;
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index 9c450e9946392298c3b4023f3b24461c60d416e7..a698b0bd837c475f612b1847b7e1adb1f72ba7f0 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -26,6 +26,7 @@ import android.widget.PopupWindow;
 import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
 import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
 import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.CoordinateUtils;
 import com.android.inputmethod.latin.InputPointers;
 import com.android.inputmethod.latin.R;
 
@@ -34,7 +35,7 @@ import com.android.inputmethod.latin.R;
  * detecting key presses and touch movements.
  */
 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;
 
@@ -169,7 +170,7 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys
         window.setHeight(container.getMeasuredHeight());
         parentView.getLocationInWindow(mCoordinates);
         window.showAtLocation(parentView, Gravity.NO_GRAVITY,
-                x + mCoordinates[0], y + mCoordinates[1]);
+                x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));
 
         mOriginX = x + container.getPaddingLeft();
         mOriginY = y + container.getPaddingTop();
diff --git a/java/src/com/android/inputmethod/latin/CoordinateUtils.java b/java/src/com/android/inputmethod/latin/CoordinateUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd3177299b2ca643407de9b66522a07602e354ef
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/CoordinateUtils.java
@@ -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];
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index 6cdd9e2cd32c5c2d47bc8982eb9d7e5cf3844a74..8cc09f39b06126d6d75fa74dcb1cf35f3467d531 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -34,6 +34,7 @@ import com.android.inputmethod.keyboard.PointerTracker;
 import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
 import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
 import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
+import com.android.inputmethod.latin.CoordinateUtils;
 import com.android.inputmethod.latin.R;
 
 /**
@@ -41,7 +42,7 @@ import com.android.inputmethod.latin.R;
  * key presses and touch movements.
  */
 public final class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
-    private final int[] mCoordinates = new int[2];
+    private final int[] mCoordinates = CoordinateUtils.newInstance();
 
     final KeyDetector mModalPanelKeyDetector;
     private final KeyDetector mSlidingPanelKeyDetector;
@@ -163,7 +164,7 @@ public final class MoreSuggestionsView extends KeyboardView implements MoreKeysP
         window.setHeight(container.getMeasuredHeight());
         parentView.getLocationInWindow(mCoordinates);
         window.showAtLocation(parentView, Gravity.NO_GRAVITY,
-                x + mCoordinates[0], y + mCoordinates[1]);
+                x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));
 
         mOriginX = x + container.getPaddingLeft();
         mOriginY = y + container.getPaddingTop();