Merge "Avoid using collection interface, using array instead"
This commit is contained in:
commit
e1a91d0b26
6 changed files with 31 additions and 42 deletions
|
@ -36,7 +36,6 @@ import com.android.inputmethod.keyboard.KeyboardView;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exposes a virtual view sub-tree for {@link KeyboardView} and generates
|
* Exposes a virtual view sub-tree for {@link KeyboardView} and generates
|
||||||
|
@ -135,9 +134,9 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat
|
||||||
ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, info);
|
ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, info);
|
||||||
|
|
||||||
// Add the virtual children of the root View.
|
// Add the virtual children of the root View.
|
||||||
// TODO(alanv): Need to assign a unique ID to each key.
|
// TODO: Need to assign a unique ID to each key.
|
||||||
final Keyboard keyboard = mKeyboardView.getKeyboard();
|
final Keyboard keyboard = mKeyboardView.getKeyboard();
|
||||||
final Set<Key> keys = keyboard.mKeys;
|
final Key[] keys = keyboard.mKeys;
|
||||||
for (Key key : keys) {
|
for (Key key : keys) {
|
||||||
final int childVirtualViewId = generateVirtualViewIdForKey(key);
|
final int childVirtualViewId = generateVirtualViewIdForKey(key);
|
||||||
info.addChild(mKeyboardView, childVirtualViewId);
|
info.addChild(mKeyboardView, childVirtualViewId);
|
||||||
|
@ -342,8 +341,8 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat
|
||||||
|
|
||||||
mVirtualViewIdToKey.clear();
|
mVirtualViewIdToKey.clear();
|
||||||
|
|
||||||
final Set<Key> keySet = keyboard.mKeys;
|
final Key[] keys = keyboard.mKeys;
|
||||||
for (Key key : keySet) {
|
for (Key key : keys) {
|
||||||
final int virtualViewId = generateVirtualViewIdForKey(key);
|
final int virtualViewId = generateVirtualViewIdForKey(key);
|
||||||
mVirtualViewIdToKey.put(virtualViewId, key);
|
mVirtualViewIdToKey.put(virtualViewId, key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
package com.android.inputmethod.compat;
|
package com.android.inputmethod.compat;
|
||||||
|
|
||||||
public class MotionEventCompatUtils {
|
public class MotionEventCompatUtils {
|
||||||
// TODO(alanv): Remove after these are added to MotionEventCompat.
|
// TODO: Remove after these are added to MotionEventCompat.
|
||||||
public static final int ACTION_HOVER_ENTER = 0x9;
|
public static final int ACTION_HOVER_ENTER = 0x9;
|
||||||
public static final int ACTION_HOVER_EXIT = 0xA;
|
public static final int ACTION_HOVER_EXIT = 0xA;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,12 +40,9 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
|
* Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
|
||||||
|
@ -125,16 +122,16 @@ public class Keyboard {
|
||||||
/** Maximum column for more keys keyboard */
|
/** Maximum column for more keys keyboard */
|
||||||
public final int mMaxMoreKeysKeyboardColumn;
|
public final int mMaxMoreKeysKeyboardColumn;
|
||||||
|
|
||||||
/** List of keys and icons in this keyboard */
|
/** Array of keys and icons in this keyboard */
|
||||||
public final Set<Key> mKeys;
|
public final Key[] mKeys;
|
||||||
public final Set<Key> mShiftKeys;
|
public final Key[] mShiftKeys;
|
||||||
public final KeyboardIconsSet mIconsSet;
|
public final KeyboardIconsSet mIconsSet;
|
||||||
|
|
||||||
private final Map<Integer, Key> mKeyCache = new HashMap<Integer, Key>();
|
private final HashMap<Integer, Key> mKeyCache = new HashMap<Integer, Key>();
|
||||||
|
|
||||||
private final ProximityInfo mProximityInfo;
|
private final ProximityInfo mProximityInfo;
|
||||||
|
|
||||||
public final Map<Integer, List<Integer>> mAdditionalProximityChars;
|
private final Map<Integer, List<Integer>> mAdditionalProximityChars;
|
||||||
|
|
||||||
public Keyboard(Params params) {
|
public Keyboard(Params params) {
|
||||||
mId = params.mId;
|
mId = params.mId;
|
||||||
|
@ -149,8 +146,8 @@ public class Keyboard {
|
||||||
mTopPadding = params.mTopPadding;
|
mTopPadding = params.mTopPadding;
|
||||||
mVerticalGap = params.mVerticalGap;
|
mVerticalGap = params.mVerticalGap;
|
||||||
|
|
||||||
mKeys = Collections.unmodifiableSet(params.mKeys);
|
mKeys = params.mKeys.toArray(new Key[params.mKeys.size()]);
|
||||||
mShiftKeys = Collections.unmodifiableSet(params.mShiftKeys);
|
mShiftKeys = params.mShiftKeys.toArray(new Key[params.mShiftKeys.size()]);
|
||||||
mIconsSet = params.mIconsSet;
|
mIconsSet = params.mIconsSet;
|
||||||
mAdditionalProximityChars = params.mAdditionalProximityChars;
|
mAdditionalProximityChars = params.mAdditionalProximityChars;
|
||||||
|
|
||||||
|
@ -225,8 +222,8 @@ public class Keyboard {
|
||||||
public int GRID_WIDTH;
|
public int GRID_WIDTH;
|
||||||
public int GRID_HEIGHT;
|
public int GRID_HEIGHT;
|
||||||
|
|
||||||
public final Set<Key> mKeys = new HashSet<Key>();
|
public final ArrayList<Key> mKeys = new ArrayList<Key>();
|
||||||
public final Set<Key> mShiftKeys = new HashSet<Key>();
|
public final ArrayList<Key> mShiftKeys = new ArrayList<Key>();
|
||||||
public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
|
public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
|
||||||
// TODO: Should be in Key instead of Keyboard.Params?
|
// TODO: Should be in Key instead of Keyboard.Params?
|
||||||
public final Map<Integer, List<Integer>> mAdditionalProximityChars =
|
public final Map<Integer, List<Integer>> mAdditionalProximityChars =
|
||||||
|
|
|
@ -25,8 +25,6 @@ import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
|
||||||
import com.android.inputmethod.latin.LatinImeLogger;
|
import com.android.inputmethod.latin.LatinImeLogger;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class PointerTracker {
|
public class PointerTracker {
|
||||||
private static final String TAG = PointerTracker.class.getSimpleName();
|
private static final String TAG = PointerTracker.class.getSimpleName();
|
||||||
|
@ -109,7 +107,7 @@ public class PointerTracker {
|
||||||
private static LatinKeyboardView.PointerTrackerParams sParams;
|
private static LatinKeyboardView.PointerTrackerParams sParams;
|
||||||
private static int sTouchNoiseThresholdDistanceSquared;
|
private static int sTouchNoiseThresholdDistanceSquared;
|
||||||
|
|
||||||
private static final List<PointerTracker> sTrackers = new ArrayList<PointerTracker>();
|
private static final ArrayList<PointerTracker> sTrackers = new ArrayList<PointerTracker>();
|
||||||
private static PointerTrackerQueue sPointerTrackerQueue;
|
private static PointerTrackerQueue sPointerTrackerQueue;
|
||||||
|
|
||||||
public final int mPointerId;
|
public final int mPointerId;
|
||||||
|
@ -120,7 +118,6 @@ public class PointerTracker {
|
||||||
private KeyboardActionListener mListener = EMPTY_LISTENER;
|
private KeyboardActionListener mListener = EMPTY_LISTENER;
|
||||||
|
|
||||||
private Keyboard mKeyboard;
|
private Keyboard mKeyboard;
|
||||||
private Set<Key> mKeys;
|
|
||||||
private int mKeyQuarterWidthSquared;
|
private int mKeyQuarterWidthSquared;
|
||||||
private final TextView mKeyPreviewText;
|
private final TextView mKeyPreviewText;
|
||||||
|
|
||||||
|
@ -180,7 +177,7 @@ public class PointerTracker {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PointerTracker getPointerTracker(final int id, KeyEventHandler handler) {
|
public static PointerTracker getPointerTracker(final int id, KeyEventHandler handler) {
|
||||||
final List<PointerTracker> trackers = sTrackers;
|
final ArrayList<PointerTracker> trackers = sTrackers;
|
||||||
|
|
||||||
// Create pointer trackers until we can get 'id+1'-th tracker, if needed.
|
// Create pointer trackers until we can get 'id+1'-th tracker, if needed.
|
||||||
for (int i = trackers.size(); i <= id; i++) {
|
for (int i = trackers.size(); i <= id; i++) {
|
||||||
|
@ -303,7 +300,6 @@ public class PointerTracker {
|
||||||
private void setKeyDetectorInner(KeyDetector keyDetector) {
|
private void setKeyDetectorInner(KeyDetector keyDetector) {
|
||||||
mKeyDetector = keyDetector;
|
mKeyDetector = keyDetector;
|
||||||
mKeyboard = keyDetector.getKeyboard();
|
mKeyboard = keyDetector.getKeyboard();
|
||||||
mKeys = mKeyboard.mKeys;
|
|
||||||
final int keyQuarterWidth = mKeyboard.mMostCommonKeyWidth / 4;
|
final int keyQuarterWidth = mKeyboard.mMostCommonKeyWidth / 4;
|
||||||
mKeyQuarterWidthSquared = keyQuarterWidth * keyQuarterWidth;
|
mKeyQuarterWidthSquared = keyQuarterWidth * keyQuarterWidth;
|
||||||
}
|
}
|
||||||
|
@ -691,7 +687,7 @@ public class PointerTracker {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMajorEnoughMoveToBeOnNewKey(int x, int y, Key newKey) {
|
private boolean isMajorEnoughMoveToBeOnNewKey(int x, int y, Key newKey) {
|
||||||
if (mKeys == null || mKeyDetector == null)
|
if (mKeyDetector == null)
|
||||||
throw new NullPointerException("keyboard and/or key detector not set");
|
throw new NullPointerException("keyboard and/or key detector not set");
|
||||||
Key curKey = mCurrentKey;
|
Key curKey = mCurrentKey;
|
||||||
if (newKey == curKey) {
|
if (newKey == curKey) {
|
||||||
|
|
|
@ -28,7 +28,6 @@ import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class ProximityInfo {
|
public class ProximityInfo {
|
||||||
public static final int MAX_PROXIMITY_CHARS_SIZE = 16;
|
public static final int MAX_PROXIMITY_CHARS_SIZE = 16;
|
||||||
|
@ -50,8 +49,8 @@ public class ProximityInfo {
|
||||||
private final String mLocaleStr;
|
private final String mLocaleStr;
|
||||||
|
|
||||||
ProximityInfo(String localeStr, int gridWidth, int gridHeight, int minWidth, int height,
|
ProximityInfo(String localeStr, int gridWidth, int gridHeight, int minWidth, int height,
|
||||||
int mostCommonKeyWidth,
|
int mostCommonKeyWidth, int mostCommonKeyHeight, final Key[] keys,
|
||||||
int mostCommonKeyHeight, Set<Key> keys, TouchPositionCorrection touchPositionCorrection,
|
TouchPositionCorrection touchPositionCorrection,
|
||||||
Map<Integer, List<Integer>> additionalProximityChars) {
|
Map<Integer, List<Integer>> additionalProximityChars) {
|
||||||
if (TextUtils.isEmpty(localeStr)) {
|
if (TextUtils.isEmpty(localeStr)) {
|
||||||
mLocaleStr = "";
|
mLocaleStr = "";
|
||||||
|
@ -77,8 +76,8 @@ public class ProximityInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ProximityInfo createDummyProximityInfo() {
|
public static ProximityInfo createDummyProximityInfo() {
|
||||||
return new ProximityInfo("", 1, 1, 1, 1, 1, 1, Collections.<Key> emptySet(),
|
return new ProximityInfo("", 1, 1, 1, 1, 1, 1, EMPTY_KEY_ARRAY, null,
|
||||||
null, Collections.<Integer, List<Integer>> emptyMap());
|
Collections.<Integer, List<Integer>> emptyMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ProximityInfo createSpellCheckerProximityInfo(final int[] proximity) {
|
public static ProximityInfo createSpellCheckerProximityInfo(final int[] proximity) {
|
||||||
|
@ -106,8 +105,7 @@ public class ProximityInfo {
|
||||||
private native void releaseProximityInfoNative(long nativeProximityInfo);
|
private native void releaseProximityInfoNative(long nativeProximityInfo);
|
||||||
|
|
||||||
private final void setProximityInfo(Key[][] gridNeighborKeys, int keyboardWidth,
|
private final void setProximityInfo(Key[][] gridNeighborKeys, int keyboardWidth,
|
||||||
int keyboardHeight, Set<Key> keys,
|
int keyboardHeight, final Key[] keys, TouchPositionCorrection touchPositionCorrection) {
|
||||||
TouchPositionCorrection touchPositionCorrection) {
|
|
||||||
final int[] proximityCharsArray = new int[mGridSize * MAX_PROXIMITY_CHARS_SIZE];
|
final int[] proximityCharsArray = new int[mGridSize * MAX_PROXIMITY_CHARS_SIZE];
|
||||||
Arrays.fill(proximityCharsArray, KeyDetector.NOT_A_CODE);
|
Arrays.fill(proximityCharsArray, KeyDetector.NOT_A_CODE);
|
||||||
for (int i = 0; i < mGridSize; ++i) {
|
for (int i = 0; i < mGridSize; ++i) {
|
||||||
|
@ -117,7 +115,7 @@ public class ProximityInfo {
|
||||||
gridNeighborKeys[i][j].mCode;
|
gridNeighborKeys[i][j].mCode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final int keyCount = keys.size();
|
final int keyCount = keys.length;
|
||||||
final int[] keyXCoordinates = new int[keyCount];
|
final int[] keyXCoordinates = new int[keyCount];
|
||||||
final int[] keyYCoordinates = new int[keyCount];
|
final int[] keyYCoordinates = new int[keyCount];
|
||||||
final int[] keyWidths = new int[keyCount];
|
final int[] keyWidths = new int[keyCount];
|
||||||
|
@ -132,8 +130,8 @@ public class ProximityInfo {
|
||||||
sweetSpotCenterYs = new float[keyCount];
|
sweetSpotCenterYs = new float[keyCount];
|
||||||
sweetSpotRadii = new float[keyCount];
|
sweetSpotRadii = new float[keyCount];
|
||||||
calculateSweetSpotParams = true;
|
calculateSweetSpotParams = true;
|
||||||
int i = 0;
|
for (int i = 0; i < keyCount; i++) {
|
||||||
for (final Key key : keys) {
|
final Key key = keys[i];
|
||||||
keyXCoordinates[i] = key.mX;
|
keyXCoordinates[i] = key.mX;
|
||||||
keyYCoordinates[i] = key.mY;
|
keyYCoordinates[i] = key.mY;
|
||||||
keyWidths[i] = key.mWidth;
|
keyWidths[i] = key.mWidth;
|
||||||
|
@ -156,7 +154,6 @@ public class ProximityInfo {
|
||||||
hitBoxWidth * hitBoxWidth + hitBoxHeight * hitBoxHeight);
|
hitBoxWidth * hitBoxWidth + hitBoxHeight * hitBoxHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sweetSpotCenterXs = sweetSpotCenterYs = sweetSpotRadii = null;
|
sweetSpotCenterXs = sweetSpotCenterYs = sweetSpotRadii = null;
|
||||||
|
@ -186,17 +183,17 @@ public class ProximityInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void computeNearestNeighbors(int defaultWidth, Set<Key> keys,
|
private void computeNearestNeighbors(int defaultWidth, final Key[] keys,
|
||||||
TouchPositionCorrection touchPositionCorrection,
|
TouchPositionCorrection touchPositionCorrection,
|
||||||
Map<Integer, List<Integer>> additionalProximityChars) {
|
Map<Integer, List<Integer>> additionalProximityChars) {
|
||||||
final Map<Integer, Key> keyCodeMap = new HashMap<Integer, Key>();
|
final HashMap<Integer, Key> keyCodeMap = new HashMap<Integer, Key>();
|
||||||
for (final Key key : keys) {
|
for (final Key key : keys) {
|
||||||
keyCodeMap.put(key.mCode, key);
|
keyCodeMap.put(key.mCode, key);
|
||||||
}
|
}
|
||||||
final int thresholdBase = (int) (defaultWidth * SEARCH_DISTANCE);
|
final int thresholdBase = (int) (defaultWidth * SEARCH_DISTANCE);
|
||||||
final int threshold = thresholdBase * thresholdBase;
|
final int threshold = thresholdBase * thresholdBase;
|
||||||
// Round-up so we don't have any pixels outside the grid
|
// Round-up so we don't have any pixels outside the grid
|
||||||
final Key[] neighborKeys = new Key[keys.size()];
|
final Key[] neighborKeys = new Key[keys.length];
|
||||||
final int gridWidth = mGridWidth * mCellWidth;
|
final int gridWidth = mGridWidth * mCellWidth;
|
||||||
final int gridHeight = mGridHeight * mCellHeight;
|
final int gridHeight = mGridHeight * mCellHeight;
|
||||||
for (int x = 0; x < gridWidth; x += mCellWidth) {
|
for (int x = 0; x < gridWidth; x += mCellWidth) {
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.util.Log;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class KeyboardIconsSet {
|
public class KeyboardIconsSet {
|
||||||
private static final String TAG = KeyboardIconsSet.class.getSimpleName();
|
private static final String TAG = KeyboardIconsSet.class.getSimpleName();
|
||||||
|
@ -35,8 +34,9 @@ public class KeyboardIconsSet {
|
||||||
|
|
||||||
private final Drawable[] mIcons = new Drawable[NUM_ICONS + 1];
|
private final Drawable[] mIcons = new Drawable[NUM_ICONS + 1];
|
||||||
|
|
||||||
private static final Map<Integer, Integer> ATTR_ID_TO_ICON_ID = new HashMap<Integer, Integer>();
|
private static final HashMap<Integer, Integer> ATTR_ID_TO_ICON_ID
|
||||||
private static final Map<String, Integer> NAME_TO_ICON_ID = new HashMap<String, Integer>();
|
= new HashMap<Integer, Integer>();
|
||||||
|
private static final HashMap<String, Integer> NAME_TO_ICON_ID = new HashMap<String, Integer>();
|
||||||
private static final String[] ICON_NAMES = new String[NUM_ICONS + 1];
|
private static final String[] ICON_NAMES = new String[NUM_ICONS + 1];
|
||||||
|
|
||||||
private static final int ATTR_UNDEFINED = 0;
|
private static final int ATTR_UNDEFINED = 0;
|
||||||
|
|
Loading…
Reference in a new issue