Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66b2fcf2 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Move some XML attributes to KeyPreviewDrawParams"

parents ad37cddd 7d09b568
Loading
Loading
Loading
Loading
+12 −27
Original line number Diff line number Diff line
@@ -161,16 +161,11 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack

    // Key preview
    private static final boolean FADE_OUT_KEY_TOP_LETTER_WHEN_KEY_IS_PRESSED = false;
    private final int mKeyPreviewLayoutId;
    // Free {@link TextView} pool that can be used for key preview.
    private final ArrayDeque<TextView> mFreeKeyPreviewTextViews = CollectionUtils.newArrayDeque();
    // Map from {@link Key} to {@link TextView} that is currently being displayed as key preview.
    private final HashMap<Key,TextView> mShowingKeyPreviewTextViews = CollectionUtils.newHashMap();
    private final KeyPreviewDrawParams mKeyPreviewDrawParams;
    private boolean mShowKeyPreviewPopup = true;
    private int mKeyPreviewLingerTimeout;
    private int mKeyPreviewZoomInDuration;
    private int mKeyPreviewZoomOutDuration;
    private static final float KEY_PREVIEW_START_ZOOM_IN_SCALE = 0.7f;
    private static final float KEY_PREVIEW_END_ZOOM_IN_SCALE = 1.0f;
    private static final float KEY_PREVIEW_END_ZOOM_OUT_SCALE = 0.7f;
@@ -266,17 +261,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
                R.styleable.MainKeyboardView_altCodeKeyWhileTypingFadeinAnimator, 0);

        mKeyPreviewDrawParams = new KeyPreviewDrawParams(mainKeyboardViewAttr);
        mKeyPreviewLingerTimeout = mainKeyboardViewAttr.getInt(
                R.styleable.MainKeyboardView_keyPreviewLingerTimeout, 0);
        mKeyPreviewLayoutId = mainKeyboardViewAttr.getResourceId(
                R.styleable.MainKeyboardView_keyPreviewLayout, 0);
        if (mKeyPreviewLayoutId == 0) {
            mShowKeyPreviewPopup = false;
        }
        mKeyPreviewZoomInDuration = mainKeyboardViewAttr.getInt(
                R.styleable.MainKeyboardView_keyPreviewZoomInDuration, 0);
        mKeyPreviewZoomOutDuration = mainKeyboardViewAttr.getInt(
                R.styleable.MainKeyboardView_keyPreviewZoomOutDuration, 0);
        final int moreKeysKeyboardLayoutId = mainKeyboardViewAttr.getResourceId(
                R.styleable.MainKeyboardView_moreKeysKeyboardLayout, 0);
        mConfigShowMoreKeysKeyboardAtTouchedPoint = mainKeyboardViewAttr.getBoolean(
@@ -450,8 +434,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
     * @see #isKeyPreviewPopupEnabled()
     */
    public void setKeyPreviewPopupEnabled(final boolean previewEnabled, final int delay) {
        mShowKeyPreviewPopup = previewEnabled;
        mKeyPreviewLingerTimeout = delay;
        mKeyPreviewDrawParams.setPopupEnabled(previewEnabled, delay);
    }

    private void locatePreviewPlacerView() {
@@ -491,7 +474,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
     * @see #setKeyPreviewPopupEnabled(boolean, int)
     */
    public boolean isKeyPreviewPopupEnabled() {
        return mShowKeyPreviewPopup;
        return mKeyPreviewDrawParams.isPopupEnabled();
    }

    private TextView getKeyPreviewTextView(final Key key) {
@@ -504,9 +487,10 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
            return previewTextView;
        }
        final Context context = getContext();
        if (mKeyPreviewLayoutId != 0) {
        final int previewLayoutId = mKeyPreviewDrawParams.mLayoutId;
        if (previewLayoutId != 0) {
            previewTextView = (TextView)LayoutInflater.from(context)
                    .inflate(mKeyPreviewLayoutId, null);
                    .inflate(previewLayoutId, null);
        } else {
            previewTextView = new TextView(context);
        }
@@ -558,7 +542,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack

        final KeyPreviewDrawParams previewParams = mKeyPreviewDrawParams;
        final Keyboard keyboard = getKeyboard();
        if (!mShowKeyPreviewPopup) {
        if (!previewParams.isPopupEnabled()) {
            previewParams.setVisibleOffset(-keyboard.mVerticalGap);
            return;
        }
@@ -586,7 +570,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final int keyDrawWidth = key.getDrawWidth();
        final int previewWidth = previewTextView.getMeasuredWidth();
        final int previewHeight = previewParams.mKeyPreviewHeight;
        final int previewHeight = previewParams.mPreviewHeight;
        previewParams.setGeometry(previewTextView);
        getLocationInWindow(mOriginCoords);
        // The key preview is horizontally aligned with the center of the visible part of the
@@ -606,7 +590,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
        }
        // The key preview is placed vertically above the top edge of the parent key with an
        // arbitrary offset.
        final int previewY = key.getY() - previewHeight + previewParams.mKeyPreviewOffset
        final int previewY = key.getY() - previewHeight + previewParams.mPreviewOffset
                + CoordinateUtils.y(mOriginCoords);

        if (background != null) {
@@ -670,7 +654,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
        final AnimatorSet zoomInAnimation = new AnimatorSet();
        zoomInAnimation.play(scaleXAnimation).with(scaleYAnimation);
        // TODO: Implement preference option to control key preview animation duration.
        zoomInAnimation.setDuration(mKeyPreviewZoomInDuration);
        zoomInAnimation.setDuration(mKeyPreviewDrawParams.mZoomInDuration);
        zoomInAnimation.setInterpolator(DECELERATE_INTERPOLATOR);
        zoomInAnimation.addListener(new AnimatorListenerAdapter() {
            @Override
@@ -691,7 +675,8 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
        final AnimatorSet zoomOutAnimation = new AnimatorSet();
        zoomOutAnimation.play(scaleXAnimation).with(scaleYAnimation);
        // TODO: Implement preference option to control key preview animation duration.
        final int zoomOutDuration = Math.min(mKeyPreviewZoomOutDuration, mKeyPreviewLingerTimeout);
        final int zoomOutDuration = Math.min(mKeyPreviewDrawParams.mZoomOutDuration,
                mKeyPreviewDrawParams.getLingerTimeout());
        zoomOutAnimation.setDuration(zoomOutDuration);
        zoomOutAnimation.setInterpolator(ACCELERATE_INTERPOLATOR);
        zoomOutAnimation.addListener(new AnimatorListenerAdapter() {
@@ -733,7 +718,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
        }
        if (!isHardwareAccelerated()) {
            // TODO: Implement preference option to control key preview method and duration.
            mDrawingHandler.dismissKeyPreview(mKeyPreviewLingerTimeout, key);
            mDrawingHandler.dismissKeyPreview(mKeyPreviewDrawParams.getLingerTimeout(), key);
            return;
        }
        final Object tag = previewTextView.getTag();
+35 −6
Original line number Diff line number Diff line
@@ -23,8 +23,13 @@ import com.android.inputmethod.latin.R;

public final class KeyPreviewDrawParams {
    // XML attributes of {@link MainKeyboardView}.
    public final int mKeyPreviewOffset;
    public final int mKeyPreviewHeight;
    public final int mLayoutId;
    public final int mPreviewOffset;
    public final int mPreviewHeight;
    public final int mZoomInDuration;
    public final int mZoomOutDuration;
    private int mLingerTimeout;
    private boolean mShowPopup = true;

    // The graphical geometry of the key preview.
    // <-width->
@@ -52,10 +57,21 @@ public final class KeyPreviewDrawParams {
    private int mVisibleOffset;

    public KeyPreviewDrawParams(final TypedArray mainKeyboardViewAttr) {
        mKeyPreviewOffset = mainKeyboardViewAttr.getDimensionPixelOffset(
        mPreviewOffset = mainKeyboardViewAttr.getDimensionPixelOffset(
                R.styleable.MainKeyboardView_keyPreviewOffset, 0);
        mKeyPreviewHeight = mainKeyboardViewAttr.getDimensionPixelSize(
        mPreviewHeight = mainKeyboardViewAttr.getDimensionPixelSize(
                R.styleable.MainKeyboardView_keyPreviewHeight, 0);
        mLingerTimeout = mainKeyboardViewAttr.getInt(
                R.styleable.MainKeyboardView_keyPreviewLingerTimeout, 0);
        mLayoutId = mainKeyboardViewAttr.getResourceId(
                R.styleable.MainKeyboardView_keyPreviewLayout, 0);
        if (mLayoutId == 0) {
            mShowPopup = false;
        }
        mZoomInDuration = mainKeyboardViewAttr.getInt(
                R.styleable.MainKeyboardView_keyPreviewZoomInDuration, 0);
        mZoomOutDuration = mainKeyboardViewAttr.getInt(
                R.styleable.MainKeyboardView_keyPreviewZoomOutDuration, 0);
    }

    public void setVisibleOffset(final int previewVisibleOffset) {
@@ -68,7 +84,7 @@ public final class KeyPreviewDrawParams {

    public void setGeometry(final View previewTextView) {
        final int previewWidth = previewTextView.getMeasuredWidth();
        final int previewHeight = mKeyPreviewHeight;
        final int previewHeight = mPreviewHeight;
        // The width and height of visible part of the key preview background. The content marker
        // of the background 9-patch have to cover the visible part of the background.
        mVisibleWidth = previewWidth - previewTextView.getPaddingLeft()
@@ -77,7 +93,7 @@ public final class KeyPreviewDrawParams {
                - previewTextView.getPaddingBottom();
        // The distance between the top edge of the parent key and the bottom of the visible part
        // of the key preview background.
        setVisibleOffset(mKeyPreviewOffset - previewTextView.getPaddingBottom());
        setVisibleOffset(mPreviewOffset - previewTextView.getPaddingBottom());
    }

    public int getVisibleWidth() {
@@ -87,4 +103,17 @@ public final class KeyPreviewDrawParams {
    public int getVisibleHeight() {
        return mVisibleHeight;
    }

    public void setPopupEnabled(final boolean enabled, final int lingerTimeout) {
        mShowPopup = enabled;
        mLingerTimeout = lingerTimeout;
    }

    public boolean isPopupEnabled() {
        return mShowPopup;
    }

    public int getLingerTimeout() {
        return mLingerTimeout;
    }
}