Loading java/src/com/android/inputmethod/keyboard/KeyboardView.java +6 −3 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import com.android.inputmethod.latin.utils.TypefaceUtils; import java.util.HashSet; import javax.annotation.Nullable; /** * A view that renders a virtual {@link Keyboard}. * Loading Loading @@ -557,9 +559,10 @@ public class KeyboardView extends View { * @param key key in the attached {@link Keyboard}. * @see #invalidateAllKeys */ public void invalidateKey(final Key key) { if (mInvalidateAllKeys) return; if (key == null) return; public void invalidateKey(@Nullable final Key key) { if (key == null || mInvalidateAllKeys) { return; } mInvalidatedKeys.add(key); final int x = key.getX() + getPaddingLeft(); final int y = key.getY() + getPaddingTop(); Loading java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +22 −18 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.view.ViewGroup; import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate; import com.android.inputmethod.annotations.ExternallyReferenced; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView; import com.android.inputmethod.keyboard.internal.GestureFloatingTextDrawingPreview; import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview; Loading Loading @@ -110,7 +111,7 @@ import javax.annotation.Nullable; * @attr ref R.styleable#MainKeyboardView_suppressKeyPreviewAfterBatchInputDuration */ public final class MainKeyboardView extends KeyboardView implements PointerTracker.DrawingProxy, MoreKeysPanel.Controller, TimerHandler.Callbacks { MoreKeysPanel.Controller { private static final String TAG = MainKeyboardView.class.getSimpleName(); /** Listener for {@link KeyboardActionListener}. */ Loading Loading @@ -178,7 +179,8 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack public MainKeyboardView(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); mDrawingPreviewPlacerView = new DrawingPreviewPlacerView(context, attrs); final DrawingPreviewPlacerView drawingPreviewPlacerView = new DrawingPreviewPlacerView(context, attrs); final TypedArray mainKeyboardViewAttr = context.obtainStyledAttributes( attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView); Loading Loading @@ -246,15 +248,17 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack mGestureFloatingTextDrawingPreview = new GestureFloatingTextDrawingPreview( mainKeyboardViewAttr); mGestureFloatingTextDrawingPreview.setDrawingView(mDrawingPreviewPlacerView); mGestureFloatingTextDrawingPreview.setDrawingView(drawingPreviewPlacerView); mGestureTrailsDrawingPreview = new GestureTrailsDrawingPreview(mainKeyboardViewAttr); mGestureTrailsDrawingPreview.setDrawingView(mDrawingPreviewPlacerView); mGestureTrailsDrawingPreview.setDrawingView(drawingPreviewPlacerView); mSlidingKeyInputDrawingPreview = new SlidingKeyInputDrawingPreview(mainKeyboardViewAttr); mSlidingKeyInputDrawingPreview.setDrawingView(mDrawingPreviewPlacerView); mSlidingKeyInputDrawingPreview.setDrawingView(drawingPreviewPlacerView); mainKeyboardViewAttr.recycle(); mDrawingPreviewPlacerView = drawingPreviewPlacerView; final LayoutInflater inflater = LayoutInflater.from(getContext()); mMoreKeysKeyboardContainer = inflater.inflate(moreKeysKeyboardLayoutId, null); mMoreKeysKeyboardForActionContainer = inflater.inflate( Loading Loading @@ -307,20 +311,20 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack animatorToStart.setCurrentPlayTime(startTime); } // Implements {@link TimerHander.Callbacks#startWhileTypingAnimation(int)}. // Implements {@link DrawingProxy#startWhileTypingAnimation(int)}. /** * Called when a while-typing-animation should be started. * @param fadeInOrOut {@link TimerHandler.Callbacks#FADE_IN} starts while-typing-fade-in * animation. {@link TimerHandler.Callbacks#FADE_OUT} starts while-typing-fade-out animation. * @param fadeInOrOut {@link DrawingProxy#FADE_IN} starts while-typing-fade-in animation. * {@link DrawingProxy#FADE_OUT} starts while-typing-fade-out animation. */ @Override public void startWhileTypingAnimation(final int fadeInOrOut) { switch (fadeInOrOut) { case TimerHandler.Callbacks.FADE_IN: case DrawingProxy.FADE_IN: cancelAndStartAnimators( mAltCodeKeyWhileTypingFadeoutAnimator, mAltCodeKeyWhileTypingFadeinAnimator); break; case TimerHandler.Callbacks.FADE_OUT: case DrawingProxy.FADE_OUT: cancelAndStartAnimators( mAltCodeKeyWhileTypingFadeinAnimator, mAltCodeKeyWhileTypingFadeoutAnimator); break; Loading Loading @@ -459,9 +463,9 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } @Override public void showKeyPreview(final Key key) { public void showKeyPreview(@Nonnull final Key key) { // If the key is invalid or has no key preview, we must not show key preview. if (key == null || key.noKeyPreview()) { if (key.noKeyPreview()) { return; } final Keyboard keyboard = getKeyboard(); Loading @@ -480,7 +484,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack getWidth(), mOriginCoords, mDrawingPreviewPlacerView, isHardwareAccelerated()); } // Implements {@link TimerHandler.Callbacks#dismissKeyPreviewWithoutDelay(Key)}. // Implements {@link DrawingProxy#dismissKeyPreviewWithoutDelay(Key)}. @Override public void dismissKeyPreviewWithoutDelay(@Nonnull final Key key) { mKeyPreviewChoreographer.dismissKeyPreview(key, false /* withAnimation */); Loading @@ -488,7 +492,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } @Override public void dismissKeyPreview(final Key key) { public void dismissKeyPreview(@Nonnull final Key key) { if (isHardwareAccelerated()) { mKeyPreviewChoreographer.dismissKeyPreview(key, true /* withAnimation */); return; Loading @@ -502,7 +506,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } @Override public void showSlidingKeyInputPreview(final PointerTracker tracker) { public void showSlidingKeyInputPreview(@Nullable final PointerTracker tracker) { locatePreviewPlacerView(); if (tracker != null) { mSlidingKeyInputDrawingPreview.setPreviewPosition(tracker); Loading @@ -529,14 +533,14 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } } // Implements {@link TimerHandler.Callbacks#dismissGestureFloatingPreviewTextWithoutDelay()}. // Implements {@link DrawingProxy#dismissGestureFloatingPreviewTextWithoutDelay()}. @Override public void dismissGestureFloatingPreviewTextWithoutDelay() { mGestureFloatingTextDrawingPreview.dismissGestureFloatingPreviewText(); } @Override public void showGestureTrail(final PointerTracker tracker, public void showGestureTrail(@Nonnull final PointerTracker tracker, final boolean showsFloatingPreviewText) { locatePreviewPlacerView(); if (showsFloatingPreviewText) { Loading Loading @@ -603,7 +607,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack return moreKeysKeyboardView; } // Implements {@link TimerHandler.Callbacks#onLongPress(PointerTracker)}. // Implements {@link DrawingProxy@onLongPress(PointerTracker)}. /** * Called when a key is long pressed. * @param tracker the pointer tracker which pressed the parent key Loading java/src/com/android/inputmethod/keyboard/PointerTracker.java +14 −7 Original line number Diff line number Diff line Loading @@ -53,12 +53,18 @@ public final class PointerTracker implements PointerTrackerQueue.Element, private static boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED || DEBUG_EVENT; public interface DrawingProxy { public void invalidateKey(Key key); public void showKeyPreview(Key key); public void dismissKeyPreview(Key key); public void invalidateKey(@Nullable Key key); public void showKeyPreview(@Nonnull Key key); public void dismissKeyPreview(@Nonnull Key key); public void dismissKeyPreviewWithoutDelay(@Nonnull Key key); public void onLongPress(@Nonnull PointerTracker tracker); public static final int FADE_IN = 0; public static final int FADE_OUT = 1; public void startWhileTypingAnimation(final int fadeInOrOut); public void showSlidingKeyInputPreview(@Nullable PointerTracker tracker); public void showGestureTrail(@Nonnull PointerTracker tracker, boolean showsFloatingPreviewText); public void dismissGestureFloatingPreviewTextWithoutDelay(); } public interface TimerProxy { Loading Loading @@ -166,6 +172,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, // The position and time at which first down event occurred. private long mDownTime; @Nonnull private int[] mDownCoordinates = CoordinateUtils.newInstance(); private long mUpTime; Loading Loading @@ -433,12 +440,12 @@ public final class PointerTracker implements PointerTrackerQueue.Element, return mKeyDetector.detectHitKey(x, y); } private void setReleasedKeyGraphics(final Key key) { sDrawingProxy.dismissKeyPreview(key); private void setReleasedKeyGraphics(@Nullable final Key key) { if (key == null) { return; } sDrawingProxy.dismissKeyPreview(key); // Even if the key is disabled, update the key release graphics just in case. updateReleaseKeyGraphics(key); Loading Loading @@ -522,7 +529,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, return mGestureStrokeDrawingPoints; } public void getLastCoordinates(final int[] outCoords) { public void getLastCoordinates(@Nonnull final int[] outCoords) { CoordinateUtils.set(outCoords, mLastX, mLastY); } Loading @@ -530,7 +537,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, return mDownTime; } public void getDownCoordinates(final int[] outCoords) { public void getDownCoordinates(@Nonnull final int[] outCoords) { CoordinateUtils.copy(outCoords, mDownCoordinates); } Loading java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java +15 −24 Original line number Diff line number Diff line Loading @@ -22,24 +22,15 @@ import android.view.ViewConfiguration; import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; import com.android.inputmethod.keyboard.internal.TimerHandler.Callbacks; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper; import javax.annotation.Nonnull; // TODO: Separate this class into KeyTimerHandler and BatchInputTimerHandler or so. public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> implements TimerProxy { public interface Callbacks { public static final int FADE_IN = 0; public static final int FADE_OUT = 1; public void startWhileTypingAnimation(final int fadeInOrOut); public void onLongPress(@Nonnull PointerTracker tracker); public void dismissKeyPreviewWithoutDelay(@Nonnull Key key); public void dismissGestureFloatingPreviewTextWithoutDelay(); } public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy> implements TimerProxy { private static final int MSG_TYPING_STATE_EXPIRED = 0; private static final int MSG_REPEAT_KEY = 1; private static final int MSG_LONGPRESS_KEY = 2; Loading @@ -52,8 +43,8 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple private final int mIgnoreAltCodeKeyTimeout; private final int mGestureRecognitionUpdateTime; public TimerHandler(@Nonnull final Callbacks ownerInstance, final int ignoreAltCodeKeyTimeout, final int gestureRecognitionUpdateTime) { public TimerHandler(@Nonnull final DrawingProxy ownerInstance, final int ignoreAltCodeKeyTimeout, final int gestureRecognitionUpdateTime) { super(ownerInstance); mIgnoreAltCodeKeyTimeout = ignoreAltCodeKeyTimeout; mGestureRecognitionUpdateTime = gestureRecognitionUpdateTime; Loading @@ -61,13 +52,13 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple @Override public void handleMessage(final Message msg) { final Callbacks callbacks = getOwnerInstance(); if (callbacks == null) { final DrawingProxy drawingProxy = getOwnerInstance(); if (drawingProxy == null) { return; } switch (msg.what) { case MSG_TYPING_STATE_EXPIRED: callbacks.startWhileTypingAnimation(Callbacks.FADE_IN); drawingProxy.startWhileTypingAnimation(DrawingProxy.FADE_IN); break; case MSG_REPEAT_KEY: final PointerTracker tracker1 = (PointerTracker) msg.obj; Loading @@ -77,7 +68,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple case MSG_LONGPRESS_SHIFT_KEY: cancelLongPressTimers(); final PointerTracker tracker2 = (PointerTracker) msg.obj; callbacks.onLongPress(tracker2); drawingProxy.onLongPress(tracker2); break; case MSG_UPDATE_BATCH_INPUT: final PointerTracker tracker3 = (PointerTracker) msg.obj; Loading @@ -86,10 +77,10 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple break; case MSG_DISMISS_KEY_PREVIEW: final Key key = (Key) msg.obj; callbacks.dismissKeyPreviewWithoutDelay(key); drawingProxy.dismissKeyPreviewWithoutDelay(key); break; case MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT: callbacks.dismissGestureFloatingPreviewTextWithoutDelay(); drawingProxy.dismissGestureFloatingPreviewTextWithoutDelay(); break; } } Loading Loading @@ -155,8 +146,8 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple final boolean isTyping = isTypingState(); removeMessages(MSG_TYPING_STATE_EXPIRED); final Callbacks callbacks = getOwnerInstance(); if (callbacks == null) { final DrawingProxy drawingProxy = getOwnerInstance(); if (drawingProxy == null) { return; } Loading @@ -164,7 +155,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple final int typedCode = typedKey.getCode(); if (typedCode == Constants.CODE_SPACE || typedCode == Constants.CODE_ENTER) { if (isTyping) { callbacks.startWhileTypingAnimation(Callbacks.FADE_IN); drawingProxy.startWhileTypingAnimation(DrawingProxy.FADE_IN); } return; } Loading @@ -174,7 +165,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple if (isTyping) { return; } callbacks.startWhileTypingAnimation(Callbacks.FADE_OUT); drawingProxy.startWhileTypingAnimation(DrawingProxy.FADE_OUT); } @Override Loading Loading
java/src/com/android/inputmethod/keyboard/KeyboardView.java +6 −3 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import com.android.inputmethod.latin.utils.TypefaceUtils; import java.util.HashSet; import javax.annotation.Nullable; /** * A view that renders a virtual {@link Keyboard}. * Loading Loading @@ -557,9 +559,10 @@ public class KeyboardView extends View { * @param key key in the attached {@link Keyboard}. * @see #invalidateAllKeys */ public void invalidateKey(final Key key) { if (mInvalidateAllKeys) return; if (key == null) return; public void invalidateKey(@Nullable final Key key) { if (key == null || mInvalidateAllKeys) { return; } mInvalidatedKeys.add(key); final int x = key.getX() + getPaddingLeft(); final int y = key.getY() + getPaddingTop(); Loading
java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +22 −18 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.view.ViewGroup; import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate; import com.android.inputmethod.annotations.ExternallyReferenced; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView; import com.android.inputmethod.keyboard.internal.GestureFloatingTextDrawingPreview; import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview; Loading Loading @@ -110,7 +111,7 @@ import javax.annotation.Nullable; * @attr ref R.styleable#MainKeyboardView_suppressKeyPreviewAfterBatchInputDuration */ public final class MainKeyboardView extends KeyboardView implements PointerTracker.DrawingProxy, MoreKeysPanel.Controller, TimerHandler.Callbacks { MoreKeysPanel.Controller { private static final String TAG = MainKeyboardView.class.getSimpleName(); /** Listener for {@link KeyboardActionListener}. */ Loading Loading @@ -178,7 +179,8 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack public MainKeyboardView(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); mDrawingPreviewPlacerView = new DrawingPreviewPlacerView(context, attrs); final DrawingPreviewPlacerView drawingPreviewPlacerView = new DrawingPreviewPlacerView(context, attrs); final TypedArray mainKeyboardViewAttr = context.obtainStyledAttributes( attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView); Loading Loading @@ -246,15 +248,17 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack mGestureFloatingTextDrawingPreview = new GestureFloatingTextDrawingPreview( mainKeyboardViewAttr); mGestureFloatingTextDrawingPreview.setDrawingView(mDrawingPreviewPlacerView); mGestureFloatingTextDrawingPreview.setDrawingView(drawingPreviewPlacerView); mGestureTrailsDrawingPreview = new GestureTrailsDrawingPreview(mainKeyboardViewAttr); mGestureTrailsDrawingPreview.setDrawingView(mDrawingPreviewPlacerView); mGestureTrailsDrawingPreview.setDrawingView(drawingPreviewPlacerView); mSlidingKeyInputDrawingPreview = new SlidingKeyInputDrawingPreview(mainKeyboardViewAttr); mSlidingKeyInputDrawingPreview.setDrawingView(mDrawingPreviewPlacerView); mSlidingKeyInputDrawingPreview.setDrawingView(drawingPreviewPlacerView); mainKeyboardViewAttr.recycle(); mDrawingPreviewPlacerView = drawingPreviewPlacerView; final LayoutInflater inflater = LayoutInflater.from(getContext()); mMoreKeysKeyboardContainer = inflater.inflate(moreKeysKeyboardLayoutId, null); mMoreKeysKeyboardForActionContainer = inflater.inflate( Loading Loading @@ -307,20 +311,20 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack animatorToStart.setCurrentPlayTime(startTime); } // Implements {@link TimerHander.Callbacks#startWhileTypingAnimation(int)}. // Implements {@link DrawingProxy#startWhileTypingAnimation(int)}. /** * Called when a while-typing-animation should be started. * @param fadeInOrOut {@link TimerHandler.Callbacks#FADE_IN} starts while-typing-fade-in * animation. {@link TimerHandler.Callbacks#FADE_OUT} starts while-typing-fade-out animation. * @param fadeInOrOut {@link DrawingProxy#FADE_IN} starts while-typing-fade-in animation. * {@link DrawingProxy#FADE_OUT} starts while-typing-fade-out animation. */ @Override public void startWhileTypingAnimation(final int fadeInOrOut) { switch (fadeInOrOut) { case TimerHandler.Callbacks.FADE_IN: case DrawingProxy.FADE_IN: cancelAndStartAnimators( mAltCodeKeyWhileTypingFadeoutAnimator, mAltCodeKeyWhileTypingFadeinAnimator); break; case TimerHandler.Callbacks.FADE_OUT: case DrawingProxy.FADE_OUT: cancelAndStartAnimators( mAltCodeKeyWhileTypingFadeinAnimator, mAltCodeKeyWhileTypingFadeoutAnimator); break; Loading Loading @@ -459,9 +463,9 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } @Override public void showKeyPreview(final Key key) { public void showKeyPreview(@Nonnull final Key key) { // If the key is invalid or has no key preview, we must not show key preview. if (key == null || key.noKeyPreview()) { if (key.noKeyPreview()) { return; } final Keyboard keyboard = getKeyboard(); Loading @@ -480,7 +484,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack getWidth(), mOriginCoords, mDrawingPreviewPlacerView, isHardwareAccelerated()); } // Implements {@link TimerHandler.Callbacks#dismissKeyPreviewWithoutDelay(Key)}. // Implements {@link DrawingProxy#dismissKeyPreviewWithoutDelay(Key)}. @Override public void dismissKeyPreviewWithoutDelay(@Nonnull final Key key) { mKeyPreviewChoreographer.dismissKeyPreview(key, false /* withAnimation */); Loading @@ -488,7 +492,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } @Override public void dismissKeyPreview(final Key key) { public void dismissKeyPreview(@Nonnull final Key key) { if (isHardwareAccelerated()) { mKeyPreviewChoreographer.dismissKeyPreview(key, true /* withAnimation */); return; Loading @@ -502,7 +506,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } @Override public void showSlidingKeyInputPreview(final PointerTracker tracker) { public void showSlidingKeyInputPreview(@Nullable final PointerTracker tracker) { locatePreviewPlacerView(); if (tracker != null) { mSlidingKeyInputDrawingPreview.setPreviewPosition(tracker); Loading @@ -529,14 +533,14 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } } // Implements {@link TimerHandler.Callbacks#dismissGestureFloatingPreviewTextWithoutDelay()}. // Implements {@link DrawingProxy#dismissGestureFloatingPreviewTextWithoutDelay()}. @Override public void dismissGestureFloatingPreviewTextWithoutDelay() { mGestureFloatingTextDrawingPreview.dismissGestureFloatingPreviewText(); } @Override public void showGestureTrail(final PointerTracker tracker, public void showGestureTrail(@Nonnull final PointerTracker tracker, final boolean showsFloatingPreviewText) { locatePreviewPlacerView(); if (showsFloatingPreviewText) { Loading Loading @@ -603,7 +607,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack return moreKeysKeyboardView; } // Implements {@link TimerHandler.Callbacks#onLongPress(PointerTracker)}. // Implements {@link DrawingProxy@onLongPress(PointerTracker)}. /** * Called when a key is long pressed. * @param tracker the pointer tracker which pressed the parent key Loading
java/src/com/android/inputmethod/keyboard/PointerTracker.java +14 −7 Original line number Diff line number Diff line Loading @@ -53,12 +53,18 @@ public final class PointerTracker implements PointerTrackerQueue.Element, private static boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED || DEBUG_EVENT; public interface DrawingProxy { public void invalidateKey(Key key); public void showKeyPreview(Key key); public void dismissKeyPreview(Key key); public void invalidateKey(@Nullable Key key); public void showKeyPreview(@Nonnull Key key); public void dismissKeyPreview(@Nonnull Key key); public void dismissKeyPreviewWithoutDelay(@Nonnull Key key); public void onLongPress(@Nonnull PointerTracker tracker); public static final int FADE_IN = 0; public static final int FADE_OUT = 1; public void startWhileTypingAnimation(final int fadeInOrOut); public void showSlidingKeyInputPreview(@Nullable PointerTracker tracker); public void showGestureTrail(@Nonnull PointerTracker tracker, boolean showsFloatingPreviewText); public void dismissGestureFloatingPreviewTextWithoutDelay(); } public interface TimerProxy { Loading Loading @@ -166,6 +172,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, // The position and time at which first down event occurred. private long mDownTime; @Nonnull private int[] mDownCoordinates = CoordinateUtils.newInstance(); private long mUpTime; Loading Loading @@ -433,12 +440,12 @@ public final class PointerTracker implements PointerTrackerQueue.Element, return mKeyDetector.detectHitKey(x, y); } private void setReleasedKeyGraphics(final Key key) { sDrawingProxy.dismissKeyPreview(key); private void setReleasedKeyGraphics(@Nullable final Key key) { if (key == null) { return; } sDrawingProxy.dismissKeyPreview(key); // Even if the key is disabled, update the key release graphics just in case. updateReleaseKeyGraphics(key); Loading Loading @@ -522,7 +529,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, return mGestureStrokeDrawingPoints; } public void getLastCoordinates(final int[] outCoords) { public void getLastCoordinates(@Nonnull final int[] outCoords) { CoordinateUtils.set(outCoords, mLastX, mLastY); } Loading @@ -530,7 +537,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, return mDownTime; } public void getDownCoordinates(final int[] outCoords) { public void getDownCoordinates(@Nonnull final int[] outCoords) { CoordinateUtils.copy(outCoords, mDownCoordinates); } Loading
java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java +15 −24 Original line number Diff line number Diff line Loading @@ -22,24 +22,15 @@ import android.view.ViewConfiguration; import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; import com.android.inputmethod.keyboard.internal.TimerHandler.Callbacks; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper; import javax.annotation.Nonnull; // TODO: Separate this class into KeyTimerHandler and BatchInputTimerHandler or so. public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> implements TimerProxy { public interface Callbacks { public static final int FADE_IN = 0; public static final int FADE_OUT = 1; public void startWhileTypingAnimation(final int fadeInOrOut); public void onLongPress(@Nonnull PointerTracker tracker); public void dismissKeyPreviewWithoutDelay(@Nonnull Key key); public void dismissGestureFloatingPreviewTextWithoutDelay(); } public final class TimerHandler extends LeakGuardHandlerWrapper<DrawingProxy> implements TimerProxy { private static final int MSG_TYPING_STATE_EXPIRED = 0; private static final int MSG_REPEAT_KEY = 1; private static final int MSG_LONGPRESS_KEY = 2; Loading @@ -52,8 +43,8 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple private final int mIgnoreAltCodeKeyTimeout; private final int mGestureRecognitionUpdateTime; public TimerHandler(@Nonnull final Callbacks ownerInstance, final int ignoreAltCodeKeyTimeout, final int gestureRecognitionUpdateTime) { public TimerHandler(@Nonnull final DrawingProxy ownerInstance, final int ignoreAltCodeKeyTimeout, final int gestureRecognitionUpdateTime) { super(ownerInstance); mIgnoreAltCodeKeyTimeout = ignoreAltCodeKeyTimeout; mGestureRecognitionUpdateTime = gestureRecognitionUpdateTime; Loading @@ -61,13 +52,13 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple @Override public void handleMessage(final Message msg) { final Callbacks callbacks = getOwnerInstance(); if (callbacks == null) { final DrawingProxy drawingProxy = getOwnerInstance(); if (drawingProxy == null) { return; } switch (msg.what) { case MSG_TYPING_STATE_EXPIRED: callbacks.startWhileTypingAnimation(Callbacks.FADE_IN); drawingProxy.startWhileTypingAnimation(DrawingProxy.FADE_IN); break; case MSG_REPEAT_KEY: final PointerTracker tracker1 = (PointerTracker) msg.obj; Loading @@ -77,7 +68,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple case MSG_LONGPRESS_SHIFT_KEY: cancelLongPressTimers(); final PointerTracker tracker2 = (PointerTracker) msg.obj; callbacks.onLongPress(tracker2); drawingProxy.onLongPress(tracker2); break; case MSG_UPDATE_BATCH_INPUT: final PointerTracker tracker3 = (PointerTracker) msg.obj; Loading @@ -86,10 +77,10 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple break; case MSG_DISMISS_KEY_PREVIEW: final Key key = (Key) msg.obj; callbacks.dismissKeyPreviewWithoutDelay(key); drawingProxy.dismissKeyPreviewWithoutDelay(key); break; case MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT: callbacks.dismissGestureFloatingPreviewTextWithoutDelay(); drawingProxy.dismissGestureFloatingPreviewTextWithoutDelay(); break; } } Loading Loading @@ -155,8 +146,8 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple final boolean isTyping = isTypingState(); removeMessages(MSG_TYPING_STATE_EXPIRED); final Callbacks callbacks = getOwnerInstance(); if (callbacks == null) { final DrawingProxy drawingProxy = getOwnerInstance(); if (drawingProxy == null) { return; } Loading @@ -164,7 +155,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple final int typedCode = typedKey.getCode(); if (typedCode == Constants.CODE_SPACE || typedCode == Constants.CODE_ENTER) { if (isTyping) { callbacks.startWhileTypingAnimation(Callbacks.FADE_IN); drawingProxy.startWhileTypingAnimation(DrawingProxy.FADE_IN); } return; } Loading @@ -174,7 +165,7 @@ public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> imple if (isTyping) { return; } callbacks.startWhileTypingAnimation(Callbacks.FADE_OUT); drawingProxy.startWhileTypingAnimation(DrawingProxy.FADE_OUT); } @Override Loading