Remeve the reference of MainKeyboardView from PointerTracker
This change also consolidates MainKeyboardView.KeyTimerParams with KeyTimerHandler. Change-Id: Ifc70ca81fa7d7daded4c2204fcdffdf942c16bc5main
parent
694ccb5ba1
commit
5509798977
|
@ -110,7 +110,6 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
new WeakHashMap<Key, MoreKeysPanel>();
|
||||
private final boolean mConfigShowMoreKeysKeyboardAtTouchedPoint;
|
||||
|
||||
private final PointerTrackerParams mPointerTrackerParams;
|
||||
private final SuddenJumpingTouchEventHandler mTouchScreenRegulator;
|
||||
|
||||
protected KeyDetector mKeyDetector;
|
||||
|
@ -127,11 +126,26 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
private static final int MSG_LONGPRESS_KEY = 2;
|
||||
private static final int MSG_DOUBLE_TAP = 3;
|
||||
|
||||
private final KeyTimerParams mParams;
|
||||
private final int mKeyRepeatStartTimeout;
|
||||
private final int mKeyRepeatInterval;
|
||||
private final int mLongPressKeyTimeout;
|
||||
private final int mLongPressShiftKeyTimeout;
|
||||
private final int mIgnoreAltCodeKeyTimeout;
|
||||
|
||||
public KeyTimerHandler(MainKeyboardView outerInstance, KeyTimerParams params) {
|
||||
public KeyTimerHandler(final MainKeyboardView outerInstance,
|
||||
final TypedArray mainKeyboardViewAttr) {
|
||||
super(outerInstance);
|
||||
mParams = params;
|
||||
|
||||
mKeyRepeatStartTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_keyRepeatStartTimeout, 0);
|
||||
mKeyRepeatInterval = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_keyRepeatInterval, 0);
|
||||
mLongPressKeyTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_longPressKeyTimeout, 0);
|
||||
mLongPressShiftKeyTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_longPressShiftKeyTimeout, 0);
|
||||
mIgnoreAltCodeKeyTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_ignoreAltCodeKeyTimeout, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -146,7 +160,7 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
final Key currentKey = tracker.getKey();
|
||||
if (currentKey != null && currentKey.mCode == msg.arg1) {
|
||||
tracker.onRegisterKey(currentKey);
|
||||
startKeyRepeatTimer(tracker, mParams.mKeyRepeatInterval);
|
||||
startKeyRepeatTimer(tracker, mKeyRepeatInterval);
|
||||
}
|
||||
break;
|
||||
case MSG_LONGPRESS_KEY:
|
||||
|
@ -167,7 +181,7 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
|
||||
@Override
|
||||
public void startKeyRepeatTimer(PointerTracker tracker) {
|
||||
startKeyRepeatTimer(tracker, mParams.mKeyRepeatStartTimeout);
|
||||
startKeyRepeatTimer(tracker, mKeyRepeatStartTimeout);
|
||||
}
|
||||
|
||||
public void cancelKeyRepeatTimer() {
|
||||
|
@ -185,7 +199,7 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
final int delay;
|
||||
switch (code) {
|
||||
case Keyboard.CODE_SHIFT:
|
||||
delay = mParams.mLongPressShiftKeyTimeout;
|
||||
delay = mLongPressShiftKeyTimeout;
|
||||
break;
|
||||
default:
|
||||
delay = 0;
|
||||
|
@ -206,15 +220,15 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
final int delay;
|
||||
switch (key.mCode) {
|
||||
case Keyboard.CODE_SHIFT:
|
||||
delay = mParams.mLongPressShiftKeyTimeout;
|
||||
delay = mLongPressShiftKeyTimeout;
|
||||
break;
|
||||
default:
|
||||
if (KeyboardSwitcher.getInstance().isInMomentarySwitchState()) {
|
||||
// We use longer timeout for sliding finger input started from the symbols
|
||||
// mode key.
|
||||
delay = mParams.mLongPressKeyTimeout * 3;
|
||||
delay = mLongPressKeyTimeout * 3;
|
||||
} else {
|
||||
delay = mParams.mLongPressKeyTimeout;
|
||||
delay = mLongPressKeyTimeout;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -268,7 +282,7 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
}
|
||||
|
||||
sendMessageDelayed(
|
||||
obtainMessage(MSG_TYPING_STATE_EXPIRED), mParams.mIgnoreAltCodeKeyTimeout);
|
||||
obtainMessage(MSG_TYPING_STATE_EXPIRED), mIgnoreAltCodeKeyTimeout);
|
||||
if (isTyping) {
|
||||
return;
|
||||
}
|
||||
|
@ -307,50 +321,6 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
}
|
||||
}
|
||||
|
||||
public static class PointerTrackerParams {
|
||||
public final boolean mSlidingKeyInputEnabled;
|
||||
public final int mTouchNoiseThresholdTime;
|
||||
public final float mTouchNoiseThresholdDistance;
|
||||
|
||||
public static final PointerTrackerParams DEFAULT = new PointerTrackerParams();
|
||||
|
||||
private PointerTrackerParams() {
|
||||
mSlidingKeyInputEnabled = false;
|
||||
mTouchNoiseThresholdTime =0;
|
||||
mTouchNoiseThresholdDistance = 0;
|
||||
}
|
||||
|
||||
public PointerTrackerParams(TypedArray mainKeyboardViewAttr) {
|
||||
mSlidingKeyInputEnabled = mainKeyboardViewAttr.getBoolean(
|
||||
R.styleable.MainKeyboardView_slidingKeyInputEnable, false);
|
||||
mTouchNoiseThresholdTime = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_touchNoiseThresholdTime, 0);
|
||||
mTouchNoiseThresholdDistance = mainKeyboardViewAttr.getDimension(
|
||||
R.styleable.MainKeyboardView_touchNoiseThresholdDistance, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static class KeyTimerParams {
|
||||
public final int mKeyRepeatStartTimeout;
|
||||
public final int mKeyRepeatInterval;
|
||||
public final int mLongPressKeyTimeout;
|
||||
public final int mLongPressShiftKeyTimeout;
|
||||
public final int mIgnoreAltCodeKeyTimeout;
|
||||
|
||||
public KeyTimerParams(TypedArray mainKeyboardViewAttr) {
|
||||
mKeyRepeatStartTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_keyRepeatStartTimeout, 0);
|
||||
mKeyRepeatInterval = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_keyRepeatInterval, 0);
|
||||
mLongPressKeyTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_longPressKeyTimeout, 0);
|
||||
mLongPressShiftKeyTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_longPressShiftKeyTimeout, 0);
|
||||
mIgnoreAltCodeKeyTimeout = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_ignoreAltCodeKeyTimeout, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public MainKeyboardView(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, R.attr.mainKeyboardViewStyle);
|
||||
}
|
||||
|
@ -389,19 +359,15 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
|
|||
final int altCodeKeyWhileTypingFadeinAnimatorResId = a.getResourceId(
|
||||
R.styleable.MainKeyboardView_altCodeKeyWhileTypingFadeinAnimator, 0);
|
||||
|
||||
final KeyTimerParams keyTimerParams = new KeyTimerParams(a);
|
||||
mPointerTrackerParams = new PointerTrackerParams(a);
|
||||
|
||||
final float keyHysteresisDistance = a.getDimension(
|
||||
R.styleable.MainKeyboardView_keyHysteresisDistance, 0);
|
||||
mKeyDetector = new KeyDetector(keyHysteresisDistance);
|
||||
mKeyTimerHandler = new KeyTimerHandler(this, keyTimerParams);
|
||||
mKeyTimerHandler = new KeyTimerHandler(this, a);
|
||||
mConfigShowMoreKeysKeyboardAtTouchedPoint = a.getBoolean(
|
||||
R.styleable.MainKeyboardView_showMoreKeysKeyboardAtTouchedPoint, false);
|
||||
PointerTracker.setParameters(a);
|
||||
a.recycle();
|
||||
|
||||
PointerTracker.setParameters(mPointerTrackerParams);
|
||||
|
||||
mLanguageOnSpacebarFadeoutAnimator = loadObjectAnimator(
|
||||
languageOnSpacebarFadeoutAnimatorResId, this);
|
||||
mAltCodeKeyWhileTypingFadeoutAnimator = loadObjectAnimator(
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package com.android.inputmethod.keyboard;
|
||||
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.os.SystemClock;
|
||||
|
@ -28,6 +29,7 @@ import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
|
|||
import com.android.inputmethod.latin.CollectionUtils;
|
||||
import com.android.inputmethod.latin.InputPointers;
|
||||
import com.android.inputmethod.latin.LatinImeLogger;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.define.ProductionFlag;
|
||||
import com.android.inputmethod.research.ResearchLogger;
|
||||
|
||||
|
@ -118,9 +120,36 @@ public class PointerTracker implements PointerTrackerQueue.Element {
|
|||
}
|
||||
}
|
||||
|
||||
static class PointerTrackerParams {
|
||||
public final boolean mSlidingKeyInputEnabled;
|
||||
public final int mTouchNoiseThresholdTime;
|
||||
public final float mTouchNoiseThresholdDistance;
|
||||
public final int mTouchNoiseThresholdDistanceSquared;
|
||||
|
||||
public static final PointerTrackerParams DEFAULT = new PointerTrackerParams();
|
||||
|
||||
private PointerTrackerParams() {
|
||||
mSlidingKeyInputEnabled = false;
|
||||
mTouchNoiseThresholdTime = 0;
|
||||
mTouchNoiseThresholdDistance = 0.0f;
|
||||
mTouchNoiseThresholdDistanceSquared = 0;
|
||||
}
|
||||
|
||||
public PointerTrackerParams(TypedArray mainKeyboardViewAttr) {
|
||||
mSlidingKeyInputEnabled = mainKeyboardViewAttr.getBoolean(
|
||||
R.styleable.MainKeyboardView_slidingKeyInputEnable, false);
|
||||
mTouchNoiseThresholdTime = mainKeyboardViewAttr.getInt(
|
||||
R.styleable.MainKeyboardView_touchNoiseThresholdTime, 0);
|
||||
final float touchNouseThresholdDistance = mainKeyboardViewAttr.getDimension(
|
||||
R.styleable.MainKeyboardView_touchNoiseThresholdDistance, 0);
|
||||
mTouchNoiseThresholdDistance = touchNouseThresholdDistance;
|
||||
mTouchNoiseThresholdDistanceSquared =
|
||||
(int)(touchNouseThresholdDistance * touchNouseThresholdDistance);
|
||||
}
|
||||
}
|
||||
|
||||
// Parameters for pointer handling.
|
||||
private static MainKeyboardView.PointerTrackerParams sParams;
|
||||
private static int sTouchNoiseThresholdDistanceSquared;
|
||||
private static PointerTrackerParams sParams;
|
||||
private static boolean sNeedsPhantomSuddenMoveEventHack;
|
||||
|
||||
private static final ArrayList<PointerTracker> sTrackers = CollectionUtils.newArrayList();
|
||||
|
@ -192,14 +221,11 @@ public class PointerTracker implements PointerTrackerQueue.Element {
|
|||
sPointerTrackerQueue = null;
|
||||
}
|
||||
sNeedsPhantomSuddenMoveEventHack = needsPhantomSuddenMoveEventHack;
|
||||
|
||||
setParameters(MainKeyboardView.PointerTrackerParams.DEFAULT);
|
||||
sParams = PointerTrackerParams.DEFAULT;
|
||||
}
|
||||
|
||||
public static void setParameters(final MainKeyboardView.PointerTrackerParams params) {
|
||||
sParams = params;
|
||||
sTouchNoiseThresholdDistanceSquared = (int)(
|
||||
params.mTouchNoiseThresholdDistance * params.mTouchNoiseThresholdDistance);
|
||||
public static void setParameters(final TypedArray mainKeyboardViewAttr) {
|
||||
sParams = new PointerTrackerParams(mainKeyboardViewAttr);
|
||||
}
|
||||
|
||||
private static void updateGestureHandlingMode() {
|
||||
|
@ -635,7 +661,7 @@ public class PointerTracker implements PointerTrackerQueue.Element {
|
|||
final int dx = x - mLastX;
|
||||
final int dy = y - mLastY;
|
||||
final int distanceSquared = (dx * dx + dy * dy);
|
||||
if (distanceSquared < sTouchNoiseThresholdDistanceSquared) {
|
||||
if (distanceSquared < sParams.mTouchNoiseThresholdDistanceSquared) {
|
||||
if (DEBUG_MODE)
|
||||
Log.w(TAG, "onDownEvent: ignore potential noise: time=" + deltaT
|
||||
+ " distance=" + distanceSquared);
|
||||
|
|
Loading…
Reference in New Issue