Merge "Remove unused vertical scrollable KeyboardView"

This commit is contained in:
Tadashi G. Takaoka 2013-11-05 10:26:14 +00:00 committed by Android (Google) Code Review
commit 463674f950
4 changed files with 23 additions and 154 deletions

View file

@ -18,16 +18,9 @@
*/
-->
<com.android.inputmethod.keyboard.internal.ScrollViewWithNotifier
<com.android.inputmethod.keyboard.internal.EmojiPageKeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/emoji_keyboard_scroller"
android:clipToPadding="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.android.inputmethod.keyboard.internal.ScrollKeyboardView
android:id="@+id/emoji_keyboard_page"
android:layoutDirection="ltr"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</com.android.inputmethod.keyboard.internal.ScrollViewWithNotifier>
android:id="@+id/emoji_keyboard_page"
android:layoutDirection="ltr"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

View file

@ -44,8 +44,7 @@ import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;
import com.android.inputmethod.keyboard.internal.DynamicGridKeyboard;
import com.android.inputmethod.keyboard.internal.ScrollKeyboardView;
import com.android.inputmethod.keyboard.internal.ScrollViewWithNotifier;
import com.android.inputmethod.keyboard.internal.EmojiPageKeyboardView;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeSwitcher;
@ -72,7 +71,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public final class EmojiPalettesView extends LinearLayout implements OnTabChangeListener,
ViewPager.OnPageChangeListener, View.OnClickListener,
ScrollKeyboardView.OnKeyClickListener {
EmojiPageKeyboardView.OnKeyClickListener {
private static final String TAG = EmojiPalettesView.class.getSimpleName();
private static final boolean DEBUG_PAGER = false;
private final int mKeyBackgroundId;
@ -628,16 +627,16 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
}
private static class EmojiPalettesAdapter extends PagerAdapter {
private final ScrollKeyboardView.OnKeyClickListener mListener;
private final EmojiPageKeyboardView.OnKeyClickListener mListener;
private final DynamicGridKeyboard mRecentsKeyboard;
private final SparseArray<ScrollKeyboardView> mActiveKeyboardViews =
private final SparseArray<EmojiPageKeyboardView> mActiveKeyboardViews =
CollectionUtils.newSparseArray();
private final EmojiCategory mEmojiCategory;
private int mActivePosition = 0;
public EmojiPalettesAdapter(final EmojiCategory emojiCategory,
final KeyboardLayoutSet layoutSet,
final ScrollKeyboardView.OnKeyClickListener listener) {
final EmojiPageKeyboardView.OnKeyClickListener listener) {
mEmojiCategory = emojiCategory;
mListener = listener;
mRecentsKeyboard = mEmojiCategory.getKeyboard(CATEGORY_ID_RECENTS, 0);
@ -675,7 +674,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
if (mActivePosition == position) {
return;
}
final ScrollKeyboardView oldKeyboardView = mActiveKeyboardViews.get(mActivePosition);
final EmojiPageKeyboardView oldKeyboardView = mActiveKeyboardViews.get(mActivePosition);
if (oldKeyboardView != null) {
oldKeyboardView.releaseCurrentKey();
oldKeyboardView.deallocateMemory();
@ -688,7 +687,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
if (DEBUG_PAGER) {
Log.d(TAG, "instantiate item: " + position);
}
final ScrollKeyboardView oldKeyboardView = mActiveKeyboardViews.get(position);
final EmojiPageKeyboardView oldKeyboardView = mActiveKeyboardViews.get(position);
if (oldKeyboardView != null) {
oldKeyboardView.deallocateMemory();
// This may be redundant but wanted to be safer..
@ -697,18 +696,13 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
final Keyboard keyboard =
mEmojiCategory.getKeyboardFromPagePosition(position);
final LayoutInflater inflater = LayoutInflater.from(container.getContext());
final View view = inflater.inflate(
final EmojiPageKeyboardView keyboardView = (EmojiPageKeyboardView)inflater.inflate(
R.layout.emoji_keyboard_page, container, false /* attachToRoot */);
final ScrollKeyboardView keyboardView = (ScrollKeyboardView)view.findViewById(
R.id.emoji_keyboard_page);
keyboardView.setKeyboard(keyboard);
keyboardView.setOnKeyClickListener(mListener);
final ScrollViewWithNotifier scrollView = (ScrollViewWithNotifier)view.findViewById(
R.id.emoji_keyboard_scroller);
keyboardView.setScrollView(scrollView);
container.addView(view);
container.addView(keyboardView);
mActiveKeyboardViews.put(position, keyboardView);
return view;
return keyboardView;
}
@Override
@ -722,7 +716,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
if (DEBUG_PAGER) {
Log.d(TAG, "destroy item: " + position + ", " + object.getClass().getSimpleName());
}
final ScrollKeyboardView keyboardView = mActiveKeyboardViews.get(position);
final EmojiPageKeyboardView keyboardView = mActiveKeyboardViews.get(position);
if (keyboardView != null) {
keyboardView.deallocateMemory();
mActiveKeyboardViews.remove(position);

View file

@ -20,25 +20,21 @@ import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.ScrollView;
import android.widget.Scroller;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.KeyDetector;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.keyboard.PointerTracker;
import com.android.inputmethod.latin.R;
/**
* This is an extended {@link KeyboardView} class that hosts a vertical scroll keyboard.
* This is an extended {@link KeyboardView} class that hosts an emoji page keyboard.
* Multi-touch unsupported. No {@link PointerTracker}s. No gesture support.
* TODO: Vertical scroll capability should be removed from this class because it's no longer used.
*/
// TODO: Implement key popup preview.
public final class ScrollKeyboardView extends KeyboardView implements
ScrollViewWithNotifier.ScrollListener, GestureDetector.OnGestureListener {
private static final boolean PAGINATION = false;
public final class EmojiPageKeyboardView extends KeyboardView implements
GestureDetector.OnGestureListener {
public interface OnKeyClickListener {
public void onKeyClick(Key key);
}
@ -52,63 +48,15 @@ public final class ScrollKeyboardView extends KeyboardView implements
private final KeyDetector mKeyDetector = new KeyDetector(0.0f /*keyHysteresisDistance */);
private final GestureDetector mGestureDetector;
private final Scroller mScroller;
private ScrollViewWithNotifier mScrollView;
public ScrollKeyboardView(final Context context, final AttributeSet attrs) {
public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) {
this(context, attrs, R.attr.keyboardViewStyle);
}
public ScrollKeyboardView(final Context context, final AttributeSet attrs, final int defStyle) {
public EmojiPageKeyboardView(final Context context, final AttributeSet attrs,
final int defStyle) {
super(context, attrs, defStyle);
mGestureDetector = new GestureDetector(context, this);
mGestureDetector.setIsLongpressEnabled(false /* isLongpressEnabled */);
mScroller = new Scroller(context);
}
public void setScrollView(final ScrollViewWithNotifier scrollView) {
mScrollView = scrollView;
scrollView.setScrollListener(this);
}
private final Runnable mScrollTask = new Runnable() {
@Override
public void run() {
final Scroller scroller = mScroller;
final ScrollView scrollView = mScrollView;
scroller.computeScrollOffset();
scrollView.scrollTo(0, scroller.getCurrY());
if (!scroller.isFinished()) {
scrollView.post(this);
}
}
};
// {@link ScrollViewWithNotified#ScrollListener} methods.
@Override
public void notifyScrollChanged(final int scrollX, final int scrollY, final int oldX,
final int oldY) {
if (PAGINATION) {
mScroller.forceFinished(true /* finished */);
mScrollView.removeCallbacks(mScrollTask);
final int currentTop = mScrollView.getScrollY();
final int pageHeight = getKeyboard().mBaseHeight;
final int lastPageNo = currentTop / pageHeight;
final int lastPageTop = lastPageNo * pageHeight;
final int nextPageNo = lastPageNo + 1;
final int nextPageTop = Math.min(nextPageNo * pageHeight, getHeight() - pageHeight);
final int scrollTo = (currentTop - lastPageTop) < (nextPageTop - currentTop)
? lastPageTop : nextPageTop;
final int deltaY = scrollTo - currentTop;
mScroller.startScroll(0, currentTop, 0, deltaY, 300);
mScrollView.post(mScrollTask);
}
}
@Override
public void notifyOverScrolled(final int scrollX, final int scrollY, final boolean clampedX,
final boolean clampedY) {
releaseCurrentKey();
}
public void setOnKeyClickListener(final OnKeyClickListener listener) {

View file

@ -1,66 +0,0 @@
/*
* Copyright (C) 2013 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.keyboard.internal;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;
/**
* This is an extended {@link ScrollView} that can notify
* {@link ScrollView#onScrollChanged(int,int,int,int} and
* {@link ScrollView#onOverScrolled(int,int,int,int)} to a content view.
*/
public class ScrollViewWithNotifier extends ScrollView {
private ScrollListener mScrollListener = EMPTY_LISTER;
public interface ScrollListener {
public void notifyScrollChanged(int scrollX, int scrollY, int oldX, int oldY);
public void notifyOverScrolled(int scrollX, int scrollY, boolean clampedX,
boolean clampedY);
}
private static final ScrollListener EMPTY_LISTER = new ScrollListener() {
@Override
public void notifyScrollChanged(int scrollX, int scrollY, int oldX, int oldY) {}
@Override
public void notifyOverScrolled(int scrollX, int scrollY, boolean clampedX,
boolean clampedY) {}
};
public ScrollViewWithNotifier(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onScrollChanged(final int scrollX, final int scrollY, final int oldX,
final int oldY) {
super.onScrollChanged(scrollX, scrollY, oldX, oldY);
mScrollListener.notifyScrollChanged(scrollX, scrollY, oldX, oldY);
}
@Override
protected void onOverScrolled(final int scrollX, final int scrollY, final boolean clampedX,
final boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
mScrollListener.notifyOverScrolled(scrollX, scrollY, clampedX, clampedY);
}
public void setScrollListener(final ScrollListener listener) {
mScrollListener = listener;
}
}