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

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

Merge "Fix keyboard row height calculation"

parents c9f562a9 8fbfac4f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -219,16 +219,17 @@ public class Key {
        final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
                R.styleable.Keyboard);
        mHeight = (int)KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
                R.styleable.Keyboard_rowHeight, params.mHeight, row.mRowHeight)
                R.styleable.Keyboard_rowHeight, params.mBaseHeight, row.mRowHeight)
                - params.mVerticalGap;
        final float horizontalGap = isSpacer() ? 0
                : KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
                        R.styleable.Keyboard_horizontalGap, params.mWidth, params.mHorizontalGap);
                        R.styleable.Keyboard_horizontalGap, params.mBaseWidth,
                        params.mHorizontalGap);
        mVerticalGap = params.mVerticalGap;
        final int widthType = KeyboardBuilder.getEnumValue(keyboardAttr,
                R.styleable.Keyboard_keyWidth, KEYWIDTH_NOT_ENUM);
        float keyWidth = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
                R.styleable.Keyboard_keyWidth, params.mWidth, row.mDefaultKeyWidth);
                R.styleable.Keyboard_keyWidth, params.mBaseWidth, row.mDefaultKeyWidth);
        keyboardAttr.recycle();

        final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
+5 −9
Original line number Diff line number Diff line
@@ -90,15 +90,12 @@ public class Keyboard {
    /** Total width of the keyboard, including the padding and keys */
    public final int mOccupiedWidth;

    public final int mHeight;
    public final int mWidth;

    /** Default row height */
    public final int mDefaultRowHeight;

    /** The padding above the keyboard */
    public final int mTopPadding;
    /** Default gap between rows */
    public final int mVerticalGap;

    public final int mMostCommonKeyHeight;
    public final int mMostCommonKeyWidth;

    /** More keys keyboard template */
@@ -126,14 +123,13 @@ public class Keyboard {
        mId = params.mId;
        mOccupiedHeight = params.mOccupiedHeight;
        mOccupiedWidth = params.mOccupiedWidth;
        mHeight = params.mHeight;
        mWidth = params.mWidth;
        mMostCommonKeyHeight = params.mMostCommonKeyHeight;
        mMostCommonKeyWidth = params.mMostCommonKeyWidth;
        mIsRtlKeyboard = params.mIsRtlKeyboard;
        mMoreKeysTemplate = params.mMoreKeysTemplate;
        mMaxMiniKeyboardColumn = params.mMaxMiniKeyboardColumn;

        mDefaultRowHeight = params.mDefaultRowHeight;
        mTopPadding = params.mTopPadding;
        mVerticalGap = params.mVerticalGap;

        mKeys = Collections.unmodifiableList(params.mKeys);
+1 −1
Original line number Diff line number Diff line
@@ -391,7 +391,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
        mDirtyRect.set(0, 0, getWidth(), getHeight());
        mBufferNeedsUpdate = true;
        invalidateAllKeys();
        final int keyHeight = keyboard.mDefaultRowHeight - keyboard.mVerticalGap;
        final int keyHeight = keyboard.mMostCommonKeyHeight - keyboard.mVerticalGap;
        mKeyDrawParams.updateKeyHeight(keyHeight);
        mKeyPreviewDrawParams.updateKeyHeight(keyHeight);
    }
+3 −3
Original line number Diff line number Diff line
@@ -122,9 +122,9 @@ public class MiniKeyboard extends Keyboard {
                    mTopRowAdjustment = -1;
                }

                mWidth = mOccupiedWidth = mNumColumns * mDefaultKeyWidth;
                mBaseWidth = mOccupiedWidth = mNumColumns * mDefaultKeyWidth;
                // Need to subtract the bottom row's gutter only.
                mHeight = mOccupiedHeight = mNumRows * mDefaultRowHeight - mVerticalGap
                mBaseHeight = mOccupiedHeight = mNumRows * mDefaultRowHeight - mVerticalGap
                        + mTopPadding + mBottomPadding;
            }

@@ -219,7 +219,7 @@ public class MiniKeyboard extends Keyboard {

            final int keyWidth = getMaxKeyWidth(view, mMoreKeys, mParams.mDefaultKeyWidth);
            mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn,
                    keyWidth, parentKeyboard.mDefaultRowHeight, parentKey.mX
                    keyWidth, parentKeyboard.mMostCommonKeyHeight, parentKey.mX
                            + (mParams.mDefaultKeyWidth - keyWidth) / 2, view.getMeasuredWidth());
        }

+32 −29
Original line number Diff line number Diff line
@@ -123,6 +123,9 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
    private static final String TAG_DEFAULT = "default";
    public static final String TAG_KEY_STYLE = "key-style";

    private static final int DEFAULT_KEYBOARD_COLUMNS = 10;
    private static final int DEFAULT_KEYBOARD_ROWS = 4;

    protected final KP mParams;
    protected final Context mContext;
    protected final Resources mResources;
@@ -151,14 +154,12 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
        public float mCurrentX;

        public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) {
            final int keyboardWidth = params.mWidth;
            final int keyboardHeight = params.mHeight;
            TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
                    R.styleable.Keyboard);
            mDefaultKeyWidth = KeyboardBuilder.getDimensionOrFraction(a,
                    R.styleable.Keyboard_keyWidth, keyboardWidth, params.mDefaultKeyWidth);
                    R.styleable.Keyboard_keyWidth, params.mBaseWidth, params.mDefaultKeyWidth);
            mRowHeight = (int)KeyboardBuilder.getDimensionOrFraction(a,
                    R.styleable.Keyboard_rowHeight, keyboardHeight, params.mDefaultRowHeight);
                    R.styleable.Keyboard_rowHeight, params.mBaseHeight, params.mDefaultRowHeight);
            a.recycle();

            mCurrentY = y;
@@ -259,38 +260,40 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
                minKeyboardHeight = -(int)getDimensionOrFraction(keyboardAttr,
                        R.styleable.Keyboard_minKeyboardHeight, displayWidth, displayWidth / 2);
            }
            final KeyboardParams params = mParams;
            // Keyboard height will not exceed maxKeyboardHeight and will not be less than
            // minKeyboardHeight.
            mParams.mOccupiedHeight = Math.max(
            params.mOccupiedHeight = Math.max(
                    Math.min(keyboardHeight, maxKeyboardHeight), minKeyboardHeight);
            mParams.mOccupiedWidth = mParams.mId.mWidth;
            mParams.mTopPadding = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_keyboardTopPadding, mParams.mOccupiedHeight, 0);
            mParams.mBottomPadding = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_keyboardBottomPadding, mParams.mOccupiedHeight, 0);

            final int height = mParams.mOccupiedHeight;
            final int width = mParams.mOccupiedWidth - mParams.mHorizontalEdgesPadding * 2
                    - mParams.mHorizontalCenterPadding;
            mParams.mHeight = height;
            mParams.mWidth = width;
            mParams.mDefaultKeyWidth = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_keyWidth, width, width / 10);
            mParams.mDefaultRowHeight = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_rowHeight, height, height / 4);
            mParams.mHorizontalGap = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_horizontalGap, width, 0);
            mParams.mVerticalGap = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_verticalGap, height, 0);

            mParams.mIsRtlKeyboard = keyboardAttr.getBoolean(
            params.mOccupiedWidth = params.mId.mWidth;
            params.mTopPadding = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_keyboardTopPadding, params.mOccupiedHeight, 0);
            params.mBottomPadding = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_keyboardBottomPadding, params.mOccupiedHeight, 0);

            params.mBaseWidth = params.mOccupiedWidth - params.mHorizontalEdgesPadding * 2
                    - params.mHorizontalCenterPadding;
            params.mDefaultKeyWidth = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_keyWidth, params.mBaseWidth,
                    params.mBaseWidth / DEFAULT_KEYBOARD_COLUMNS);
            params.mHorizontalGap = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_horizontalGap, params.mBaseWidth, 0);
            params.mVerticalGap = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_verticalGap, params.mOccupiedHeight, 0);
            params.mBaseHeight = params.mOccupiedHeight - params.mTopPadding
                    - params.mBottomPadding + params.mVerticalGap;
            params.mDefaultRowHeight = (int)getDimensionOrFraction(keyboardAttr,
                    R.styleable.Keyboard_rowHeight, params.mBaseHeight,
                    params.mBaseHeight / DEFAULT_KEYBOARD_ROWS);

            params.mIsRtlKeyboard = keyboardAttr.getBoolean(
                    R.styleable.Keyboard_isRtlKeyboard, false);
            mParams.mMoreKeysTemplate = keyboardAttr.getResourceId(
            params.mMoreKeysTemplate = keyboardAttr.getResourceId(
                    R.styleable.Keyboard_moreKeysTemplate, 0);
            mParams.mMaxMiniKeyboardColumn = keyAttr.getInt(
            params.mMaxMiniKeyboardColumn = keyAttr.getInt(
                    R.styleable.Keyboard_Key_maxMoreKeysColumn, 5);

            mParams.mIconsSet.loadIcons(keyboardAttr);
            params.mIconsSet.loadIcons(keyboardAttr);
        } finally {
            keyAttr.recycle();
            keyboardAttr.recycle();
Loading