Merge "Change space key height in Emoji keyboard view"
This commit is contained in:
commit
695a5a391d
5 changed files with 109 additions and 18 deletions
|
@ -76,18 +76,24 @@
|
||||||
android:id="@+id/emoji_action_bar"
|
android:id="@+id/emoji_action_bar"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/suggestions_strip_height"
|
android:layout_height="0dip"
|
||||||
|
android:layout_weight="1"
|
||||||
>
|
>
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/emoji_keyboard_alphabet"
|
android:id="@+id/emoji_keyboard_alphabet"
|
||||||
android:layout_width="0dip"
|
android:layout_width="0dip"
|
||||||
android:layout_weight="0.825"
|
android:layout_weight="0.15"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:src="@drawable/ic_ime_light" />
|
android:src="@drawable/ic_ime_light" />
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/emoji_keyboard_space"
|
||||||
|
android:layout_width="0dip"
|
||||||
|
android:layout_weight="0.70"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/emoji_keyboard_send"
|
android:id="@+id/emoji_keyboard_send"
|
||||||
android:layout_width="0dip"
|
android:layout_width="0dip"
|
||||||
android:layout_weight="0.125"
|
android:layout_weight="0.15"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:src="@drawable/sym_keyboard_return_holo" />
|
android:src="@drawable/sym_keyboard_return_holo" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -45,6 +45,8 @@
|
||||||
possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
|
possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
|
||||||
checkable+checked+pressed. -->
|
checkable+checked+pressed. -->
|
||||||
<attr name="keyBackground" format="reference" />
|
<attr name="keyBackground" format="reference" />
|
||||||
|
<!-- Image for the functional key used in Emoji layout. -->
|
||||||
|
<attr name="keyBackgroundEmojiFunctional" format="reference" />
|
||||||
|
|
||||||
<!-- Horizontal padding of left/right aligned key label to the edge of the key. -->
|
<!-- Horizontal padding of left/right aligned key label to the edge of the key. -->
|
||||||
<attr name="keyLabelHorizontalPadding" format="dimension" />
|
<attr name="keyLabelHorizontalPadding" format="dimension" />
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
name="EmojiKeyboardView.ICS"
|
name="EmojiKeyboardView.ICS"
|
||||||
parent="KeyboardView.ICS"
|
parent="KeyboardView.ICS"
|
||||||
>
|
>
|
||||||
<item name="keyBackground">@drawable/btn_keyboard_key_functional_ics</item>
|
<item name="keyBackgroundEmojiFunctional">@drawable/btn_keyboard_key_functional_ics</item>
|
||||||
<item name="emojiTabLabelColor">@color/emoji_tab_label_color_ics</item>
|
<item name="emojiTabLabelColor">@color/emoji_tab_label_color_ics</item>
|
||||||
</style>
|
</style>
|
||||||
<style
|
<style
|
||||||
|
|
|
@ -61,6 +61,7 @@ public final class EmojiKeyboardView extends LinearLayout implements OnTabChange
|
||||||
ViewPager.OnPageChangeListener, View.OnClickListener,
|
ViewPager.OnPageChangeListener, View.OnClickListener,
|
||||||
ScrollKeyboardView.OnKeyClickListener {
|
ScrollKeyboardView.OnKeyClickListener {
|
||||||
private final int mKeyBackgroundId;
|
private final int mKeyBackgroundId;
|
||||||
|
private final int mEmojiFunctionalKeyBackgroundId;
|
||||||
private final ColorStateList mTabLabelColor;
|
private final ColorStateList mTabLabelColor;
|
||||||
private final EmojiKeyboardAdapter mEmojiKeyboardAdapter;
|
private final EmojiKeyboardAdapter mEmojiKeyboardAdapter;
|
||||||
|
|
||||||
|
@ -116,6 +117,8 @@ public final class EmojiKeyboardView extends LinearLayout implements OnTabChange
|
||||||
R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
|
R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
|
||||||
mKeyBackgroundId = keyboardViewAttr.getResourceId(
|
mKeyBackgroundId = keyboardViewAttr.getResourceId(
|
||||||
R.styleable.KeyboardView_keyBackground, 0);
|
R.styleable.KeyboardView_keyBackground, 0);
|
||||||
|
mEmojiFunctionalKeyBackgroundId = keyboardViewAttr.getResourceId(
|
||||||
|
R.styleable.KeyboardView_keyBackgroundEmojiFunctional, 0);
|
||||||
keyboardViewAttr.recycle();
|
keyboardViewAttr.recycle();
|
||||||
final TypedArray emojiKeyboardViewAttr = context.obtainStyledAttributes(attrs,
|
final TypedArray emojiKeyboardViewAttr = context.obtainStyledAttributes(attrs,
|
||||||
R.styleable.EmojiKeyboardView, defStyle, R.style.EmojiKeyboardView);
|
R.styleable.EmojiKeyboardView, defStyle, R.style.EmojiKeyboardView);
|
||||||
|
@ -126,10 +129,9 @@ public final class EmojiKeyboardView extends LinearLayout implements OnTabChange
|
||||||
context, null /* editorInfo */);
|
context, null /* editorInfo */);
|
||||||
final Resources res = context.getResources();
|
final Resources res = context.getResources();
|
||||||
builder.setSubtype(SubtypeSwitcher.getInstance().getEmojiSubtype());
|
builder.setSubtype(SubtypeSwitcher.getInstance().getEmojiSubtype());
|
||||||
// TODO: Make Keyboard height variable.
|
|
||||||
builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(res),
|
builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(res),
|
||||||
(int)(ResourceUtils.getDefaultKeyboardHeight(res)
|
(int)ResourceUtils.getDefaultKeyboardHeight(res)
|
||||||
- res.getDimension(R.dimen.suggestions_strip_height)));
|
+ res.getDimensionPixelSize(R.dimen.suggestions_strip_height));
|
||||||
builder.setOptions(false, false, false /* lanuageSwitchKeyEnabled */);
|
builder.setOptions(false, false, false /* lanuageSwitchKeyEnabled */);
|
||||||
final KeyboardLayoutSet layoutSet = builder.build();
|
final KeyboardLayoutSet layoutSet = builder.build();
|
||||||
mEmojiKeyboardAdapter = new EmojiKeyboardAdapter(layoutSet, this);
|
mEmojiKeyboardAdapter = new EmojiKeyboardAdapter(layoutSet, this);
|
||||||
|
@ -165,7 +167,6 @@ public final class EmojiKeyboardView extends LinearLayout implements OnTabChange
|
||||||
R.layout.emoji_keyboard_tab_label, null);
|
R.layout.emoji_keyboard_tab_label, null);
|
||||||
textView.setText(sCategoryLabel[category]);
|
textView.setText(sCategoryLabel[category]);
|
||||||
textView.setTextColor(mTabLabelColor);
|
textView.setTextColor(mTabLabelColor);
|
||||||
textView.setBackgroundResource(mKeyBackgroundId);
|
|
||||||
tspec.setIndicator(textView);
|
tspec.setIndicator(textView);
|
||||||
}
|
}
|
||||||
host.addTab(tspec);
|
host.addTab(tspec);
|
||||||
|
@ -189,27 +190,33 @@ public final class EmojiKeyboardView extends LinearLayout implements OnTabChange
|
||||||
mEmojiPager.setAdapter(mEmojiKeyboardAdapter);
|
mEmojiPager.setAdapter(mEmojiKeyboardAdapter);
|
||||||
mEmojiPager.setOnPageChangeListener(this);
|
mEmojiPager.setOnPageChangeListener(this);
|
||||||
mEmojiPager.setOffscreenPageLimit(0);
|
mEmojiPager.setOffscreenPageLimit(0);
|
||||||
final ViewGroup.LayoutParams lp = mEmojiPager.getLayoutParams();
|
|
||||||
final Resources res = getResources();
|
final Resources res = getResources();
|
||||||
lp.height = ResourceUtils.getDefaultKeyboardHeight(res)
|
final EmojiLayoutParams emojiLp = new EmojiLayoutParams(res);
|
||||||
- res.getDimensionPixelSize(R.dimen.suggestions_strip_height);
|
emojiLp.setPagerProps(mEmojiPager);
|
||||||
mEmojiPager.setLayoutParams(lp);
|
|
||||||
|
|
||||||
// TODO: Record current category.
|
// TODO: Record current category.
|
||||||
final int category = CATEGORY_PEOPLE;
|
final int category = CATEGORY_PEOPLE;
|
||||||
setCurrentCategory(category, true /* force */);
|
setCurrentCategory(category, true /* force */);
|
||||||
|
|
||||||
|
final LinearLayout actionBar = (LinearLayout)findViewById(R.id.emoji_action_bar);
|
||||||
|
emojiLp.setActionBarProps(actionBar);
|
||||||
|
|
||||||
// TODO: Implement auto repeat, using View.OnTouchListener?
|
// TODO: Implement auto repeat, using View.OnTouchListener?
|
||||||
final View deleteKey = findViewById(R.id.emoji_keyboard_delete);
|
final ImageView deleteKey = (ImageView)findViewById(R.id.emoji_keyboard_delete);
|
||||||
deleteKey.setBackgroundResource(mKeyBackgroundId);
|
deleteKey.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
|
||||||
deleteKey.setTag(Constants.CODE_DELETE);
|
deleteKey.setTag(Constants.CODE_DELETE);
|
||||||
deleteKey.setOnClickListener(this);
|
deleteKey.setOnClickListener(this);
|
||||||
final View alphabetKey = findViewById(R.id.emoji_keyboard_alphabet);
|
final ImageView alphabetKey = (ImageView)findViewById(R.id.emoji_keyboard_alphabet);
|
||||||
alphabetKey.setBackgroundResource(mKeyBackgroundId);
|
alphabetKey.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
|
||||||
alphabetKey.setTag(Constants.CODE_SWITCH_ALPHA_SYMBOL);
|
alphabetKey.setTag(Constants.CODE_SWITCH_ALPHA_SYMBOL);
|
||||||
alphabetKey.setOnClickListener(this);
|
alphabetKey.setOnClickListener(this);
|
||||||
final View sendKey = findViewById(R.id.emoji_keyboard_send);
|
final ImageView spaceKey = (ImageView)findViewById(R.id.emoji_keyboard_space);
|
||||||
sendKey.setBackgroundResource(mKeyBackgroundId);
|
spaceKey.setBackgroundResource(mKeyBackgroundId);
|
||||||
|
spaceKey.setTag(Constants.CODE_SPACE);
|
||||||
|
spaceKey.setOnClickListener(this);
|
||||||
|
emojiLp.setKeyProps(spaceKey);
|
||||||
|
final ImageView sendKey = (ImageView)findViewById(R.id.emoji_keyboard_send);
|
||||||
|
sendKey.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
|
||||||
sendKey.setTag(Constants.CODE_ENTER);
|
sendKey.setTag(Constants.CODE_ENTER);
|
||||||
sendKey.setOnClickListener(this);
|
sendKey.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.R;
|
||||||
|
import com.android.inputmethod.latin.utils.ResourceUtils;
|
||||||
|
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.support.v4.view.ViewPager;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
|
public class EmojiLayoutParams {
|
||||||
|
private static final int DEFAULT_KEYBOARD_ROWS = 4;
|
||||||
|
|
||||||
|
public final int mEmojiKeyboardHeight;
|
||||||
|
public final int mEmojiActionBarHeight;
|
||||||
|
public final int mKeyVerticalGap;
|
||||||
|
private final int mKeyHorizontalGap;
|
||||||
|
private final int mBottomPadding;
|
||||||
|
private final int mTopPadding;
|
||||||
|
|
||||||
|
public EmojiLayoutParams(Resources res) {
|
||||||
|
final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
|
||||||
|
final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
|
||||||
|
mKeyVerticalGap = (int) res.getFraction(R.fraction.key_bottom_gap_ics,
|
||||||
|
(int) defaultKeyboardHeight, (int) defaultKeyboardHeight);
|
||||||
|
mBottomPadding = (int) res.getFraction(R.fraction.keyboard_bottom_padding_ics,
|
||||||
|
(int) defaultKeyboardHeight, (int) defaultKeyboardHeight);
|
||||||
|
mTopPadding = (int) res.getFraction(R.fraction.keyboard_top_padding_ics,
|
||||||
|
(int) defaultKeyboardHeight, (int) defaultKeyboardHeight);
|
||||||
|
mKeyHorizontalGap = (int) (res.getFraction(R.fraction.key_horizontal_gap_ics,
|
||||||
|
defaultKeyboardWidth, defaultKeyboardWidth));
|
||||||
|
final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding
|
||||||
|
+ mKeyVerticalGap;
|
||||||
|
mEmojiActionBarHeight = ((int) baseheight) / DEFAULT_KEYBOARD_ROWS
|
||||||
|
- (mKeyVerticalGap - mBottomPadding) / 2;
|
||||||
|
mEmojiKeyboardHeight = defaultKeyboardHeight - mEmojiActionBarHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPagerProps(ViewPager vp) {
|
||||||
|
final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) vp.getLayoutParams();
|
||||||
|
lp.height = mEmojiKeyboardHeight - mKeyVerticalGap / 2;
|
||||||
|
lp.bottomMargin = mKeyVerticalGap / 2;
|
||||||
|
vp.setLayoutParams(lp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActionBarProps(LinearLayout ll) {
|
||||||
|
final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
|
||||||
|
lp.height = mEmojiActionBarHeight;
|
||||||
|
lp.topMargin = 0;
|
||||||
|
lp.bottomMargin = mBottomPadding;
|
||||||
|
ll.setLayoutParams(lp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKeyProps(ImageView ib) {
|
||||||
|
final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ib.getLayoutParams();
|
||||||
|
lp.leftMargin = mKeyHorizontalGap / 2;
|
||||||
|
lp.rightMargin = mKeyHorizontalGap / 2;
|
||||||
|
ib.setLayoutParams(lp);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue