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

Commit 8fbfac4f authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Fix keyboard row height calculation

The keyboard height will be distrubuted as:
  top_padding + (key_height + vertical_gap) * row_count - vertical_gap + bottom_padding

Change-Id: I841f356b9dbf8cfaf3756178bc9e4e6b2aa61364
parent 8d6fd877
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