Cancel keydown events immediately once the view starts scrolling
The motivation of this patch is to make sure a user never feel
haptic feedback when scrolling the Emoji palette. In order to
achieve it, EmojiPageKeyboardView#releaseCurrentKey() should
be called whenever (delayed) keydown events should be canceled.
This patch wires up ViewPager.OnPageChangeListener#onPageScrolled
with EmojiPageKeyboardView#releaseCurrentKey() so that delayed
keydown events will be canceled immediately once the ViewParger
starts scrolling.
BUG: 12964092
Change-Id: Iea8c3e090bb16a8622e6b4a850af2bf963aa77d0
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
index 672759a..b44741c 100644
--- a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
@@ -534,6 +534,7 @@
@Override
public void onPageScrolled(final int position, final float positionOffset,
final int positionOffsetPixels) {
+ mEmojiPalettesAdapter.onPageScrolled();
final Pair<Integer, Integer> newPos =
mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
final int newCategoryId = newPos.first;
@@ -718,6 +719,14 @@
}
}
+ public void onPageScrolled() {
+ // Make sure the delayed key-down event (highlight effect and haptic feedback) will be
+ // canceled.
+ final EmojiPageKeyboardView currentKeyboardView =
+ mActiveKeyboardViews.get(mActivePosition);
+ currentKeyboardView.releaseCurrentKey();
+ }
+
@Override
public int getCount() {
return mEmojiCategory.getTotalPageCountOfAllCategories();