Add emoji palette

This commit is contained in:
Naveen 2022-07-30 21:29:18 +05:30
parent 71e6b63158
commit 45e41471e2
52 changed files with 4193 additions and 14 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,50 @@
package com.simplemobiletools.keyboard.adapters
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.simplemobiletools.keyboard.R
import com.simplemobiletools.keyboard.media.emoji.Emoji
import kotlinx.android.synthetic.main.item_emoji.view.*
class EmojisAdapter(
val context: Context, var items: List<Emoji>, val itemClick: (emoji: Emoji) -> Unit
) : RecyclerView.Adapter<EmojisAdapter.ViewHolder>() {
private val layoutInflater = LayoutInflater.from(context)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EmojisAdapter.ViewHolder {
val layoutId = R.layout.item_emoji
val view = layoutInflater.inflate(layoutId, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: EmojisAdapter.ViewHolder, position: Int) {
val item = items[position]
holder.bindView(item) { itemView ->
setupEmoji(itemView, item)
}
}
override fun getItemCount(): Int {
return items.size
}
private fun setupEmoji(view: View, emoji: Emoji) {
view.emoji_value.text = emoji.value
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindView(any: Emoji, callback: (itemView: View) -> Unit): View {
return itemView.apply {
callback(this)
setOnClickListener {
itemClick.invoke(any)
}
}
}
}
}

View File

@ -0,0 +1,19 @@
package com.simplemobiletools.keyboard.extensions
import androidx.recyclerview.widget.RecyclerView
/**
* Calls the [scroll] callback when the receiving RecyclerView's scroll position is changed.
*/
fun RecyclerView.onScroll(scroll: (Int) -> Unit) {
addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(
recyclerView: RecyclerView,
dx: Int,
dy: Int,
) {
super.onScrolled(recyclerView, dx, dy)
scroll(computeVerticalScrollOffset())
}
})
}

View File

@ -26,3 +26,6 @@ const val LANGUAGE_GERMAN = 5
const val LANGUAGE_ENGLISH_DVORAK = 6
const val LANGUAGE_ROMANIAN = 7
const val LANGUAGE_SLOVENIAN = 8
const val EMOJI_SPEC_FILE_PATH = "media/emoji_spec.txt"

View File

@ -0,0 +1,8 @@
package com.simplemobiletools.keyboard.media.emoji
data class Emoji(val value: String, val name: String, val keywords: List<String>) {
override fun toString(): String {
return "Emoji { value=$value, name=$name, keywords=$keywords }"
}
}

View File

@ -0,0 +1,63 @@
package com.simplemobiletools.keyboard.media.emoji
import android.content.Context
private var cachedEmojiData: MutableList<Emoji>? = null
/**
* Reads the emoji list at the given [path] and returns an parsed [MutableList]. If the
* given file path does not exist, an empty [MutableList] is returned.
*
* @param context The initiating view's context.
* @param path The path to the asset file.
*/
fun parseRawEmojiSpecsFile(
context: Context, path: String
): MutableList<Emoji> {
cachedEmojiData?.let { return it }
val emojis = mutableListOf<Emoji>()
var emojiEditorList: MutableList<Emoji>? = null
fun commitEmojiEditorList() {
emojiEditorList?.let {
// add only the base emoji for now, ignore the variations
emojis.add(it.first())
}
emojiEditorList = null
}
context.assets.open(path).bufferedReader().useLines { lines ->
for (line in lines) {
if (line.startsWith("#")) {
// Comment line
} else if (line.startsWith("[")) {
commitEmojiEditorList()
} else if (line.trim().isEmpty()) {
// Empty line
continue
} else {
if (!line.startsWith("\t")) {
commitEmojiEditorList()
}
// Assume it is a data line
val data = line.split(";")
if (data.size == 3) {
val emoji = Emoji(
value = data[0].trim(),
name = data[1].trim(),
keywords = data[2].split("|").map { it.trim() }
)
if (emojiEditorList != null) {
emojiEditorList!!.add(emoji)
} else {
emojiEditorList = mutableListOf(emoji)
}
}
}
}
commitEmojiEditorList()
}
cachedEmojiData = emojis
return emojis
}

View File

@ -106,7 +106,8 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
val selectedText = inputConnection.getSelectedText(0)
if (TextUtils.isEmpty(selectedText)) {
inputConnection.deleteSurroundingText(1, 0)
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL))
} else {
inputConnection.commitText("", 1)
}
@ -155,6 +156,10 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
keyboard = MyKeyboard(this, keyboardXml, enterKeyType)
keyboardView!!.setKeyboard(keyboard!!)
}
MyKeyboard.KEYCODE_EMOJI -> {
keyboardView?.vibrateIfNeeded()
keyboardView?.openEmojiChooser()
}
else -> {
var codeChar = code.toChar()
if (Character.isLetter(codeChar) && keyboard!!.mShiftState > SHIFT_OFF) {

View File

@ -0,0 +1,36 @@
package com.simplemobiletools.keyboard.views
import android.content.Context
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlin.math.max
/**
* RecyclerView GridLayoutManager but with automatic spanCount calculation.
*
* @param context The initiating view's context.
* @param itemWidth: Grid item width in pixels. Will be used to calculate span count.
*/
class AutoGridLayoutManager(
context: Context,
private var itemWidth: Int
) : GridLayoutManager(context, 1) {
init {
require(itemWidth >= 0) { "itemWidth must be >= 0" }
}
override fun onLayoutChildren(recycler: RecyclerView.Recycler?, state: RecyclerView.State?) {
val width = width
val height = height
if (itemWidth > 0 && width > 0 && height > 0) {
val totalSpace = if (orientation == VERTICAL) {
width - paddingRight - paddingLeft
} else {
height - paddingTop - paddingBottom
}
spanCount = max(1, totalSpace / itemWidth)
}
super.onLayoutChildren(recycler, state)
}
}

View File

@ -33,17 +33,18 @@ import com.simplemobiletools.keyboard.R
import com.simplemobiletools.keyboard.activities.ManageClipboardItemsActivity
import com.simplemobiletools.keyboard.activities.SettingsActivity
import com.simplemobiletools.keyboard.adapters.ClipsKeyboardAdapter
import com.simplemobiletools.keyboard.extensions.clipsDB
import com.simplemobiletools.keyboard.extensions.config
import com.simplemobiletools.keyboard.extensions.getCurrentClip
import com.simplemobiletools.keyboard.extensions.getStrokeColor
import com.simplemobiletools.keyboard.adapters.EmojisAdapter
import com.simplemobiletools.keyboard.extensions.*
import com.simplemobiletools.keyboard.helpers.*
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_DELETE
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_EMOJI
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_ENTER
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_MODE_CHANGE
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SHIFT
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SPACE
import com.simplemobiletools.keyboard.interfaces.RefreshClipsListener
import com.simplemobiletools.keyboard.media.emoji.Emoji
import com.simplemobiletools.keyboard.media.emoji.parseRawEmojiSpecsFile
import com.simplemobiletools.keyboard.models.Clip
import com.simplemobiletools.keyboard.models.ClipsSectionLabel
import com.simplemobiletools.keyboard.models.ListItem
@ -51,7 +52,7 @@ import kotlinx.android.synthetic.main.keyboard_popup_keyboard.view.*
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.*
import java.util.*
@SuppressLint("UseCompatLoadingForDrawables")
@SuppressLint("UseCompatLoadingForDrawables", "ClickableViewAccessibility")
class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: AttributeSet?, defStyleRes: Int = 0) :
View(context, attrs, defStyleRes) {
@ -153,6 +154,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
private var mToolbarHolder: View? = null
private var mClipboardManagerHolder: View? = null
private var mEmojiPaletteHolder: View? = null
// For multi-tap
private var mLastTapTime = 0L
@ -331,6 +333,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
clipboard_content_placeholder_2.setTextColor(mTextColor)
}
setupEmojiPalette(toolbarColor = toolbarColor, backgroundColor = mBackgroundColor, textColor = mTextColor)
setupStoredClips()
}
}
@ -364,6 +367,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
fun setKeyboardHolder(keyboardHolder: View) {
mToolbarHolder = keyboardHolder.toolbar_holder
mClipboardManagerHolder = keyboardHolder.clipboard_manager_holder
mEmojiPaletteHolder = keyboardHolder.emoji_palette_holder
mToolbarHolder!!.apply {
settings_cog.setOnLongClickListener { context.toast(R.string.settings); true; }
@ -412,6 +416,12 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
}
}
}
mEmojiPaletteHolder!!.apply {
emoji_palette_close.setOnClickListener {
vibrateIfNeeded()
closeEmojiChooser()
}
}
}
fun vibrateIfNeeded() {
@ -436,7 +446,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
* @return true if the shift is in a pressed state, false otherwise
*/
private fun isShifted(): Boolean {
return mKeyboard?.mShiftState ?: SHIFT_OFF > SHIFT_OFF
return (mKeyboard?.mShiftState ?: SHIFT_OFF) > SHIFT_OFF
}
private fun setPopupOffset(x: Int, y: Int) {
@ -450,7 +460,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
private fun adjustCase(label: CharSequence): CharSequence? {
var newLabel: CharSequence? = label
if (newLabel != null && newLabel.isNotEmpty() && mKeyboard!!.mShiftState > SHIFT_OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
newLabel = newLabel.toString().toUpperCase()
newLabel = newLabel.toString().uppercase(Locale.getDefault())
}
return newLabel
}
@ -607,7 +617,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
if (code == KEYCODE_ENTER) {
key.icon!!.applyColorFilter(mPrimaryColor.getContrastColor())
} else if (code == KEYCODE_DELETE || code == KEYCODE_SHIFT) {
} else if (code == KEYCODE_DELETE || code == KEYCODE_SHIFT || code == KEYCODE_EMOJI) {
key.icon!!.applyColorFilter(mTextColor)
}
@ -1372,6 +1382,92 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
mClipboardManagerHolder?.clips_list?.adapter = adapter
}
private fun setupEmojiPalette(toolbarColor: Int, backgroundColor: Int, textColor: Int) {
mEmojiPaletteHolder?.apply {
emoji_palette_top_bar.background = ColorDrawable(toolbarColor)
emoji_palette_holder.background = ColorDrawable(backgroundColor)
emoji_palette_close.applyColorFilter(textColor)
emoji_palette_label.setTextColor(textColor)
emoji_palette_bottom_bar.background = ColorDrawable(backgroundColor)
val bottomTextColor = textColor.darkenColor()
emoji_palette_mode_change.apply {
setTextColor(bottomTextColor)
setOnClickListener {
closeEmojiChooser()
}
}
emoji_palette_backspace.apply {
applyColorFilter(bottomTextColor)
setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
isPressed = true
mRepeatKeyIndex = mKeys.indexOfFirst { it.code == KEYCODE_DELETE }
mCurrentKey = mRepeatKeyIndex
mOnKeyboardActionListener!!.onKey(KEYCODE_DELETE)
// setup repeating backspace
val msg = mHandler!!.obtainMessage(MSG_REPEAT)
mHandler!!.sendMessageDelayed(msg, REPEAT_START_DELAY.toLong())
true
}
MotionEvent.ACTION_UP -> {
mHandler!!.removeMessages(MSG_REPEAT)
mRepeatKeyIndex = NOT_A_KEY
isPressed = false
false
}
else -> false
}
}
}
}
setupEmojis()
}
fun openEmojiChooser() {
mEmojiPaletteHolder!!.emoji_palette_holder.beVisible()
setupEmojis()
}
private fun closeEmojiChooser() {
mEmojiPaletteHolder?.apply {
emoji_palette_holder?.beGone()
mEmojiPaletteHolder?.emojis_list?.scrollToPosition(0)
}
}
private fun setupEmojis() {
ensureBackgroundThread {
val fullEmojiList = parseRawEmojiSpecsFile(context, EMOJI_SPEC_FILE_PATH)
val systemFontPaint = Paint().apply {
typeface = Typeface.DEFAULT
}
val emojis = fullEmojiList.filter { emoji ->
systemFontPaint.hasGlyph(emoji.value)
}
Handler(Looper.getMainLooper()).post {
setupEmojiAdapter(emojis)
}
}
}
private fun setupEmojiAdapter(emojis: List<Emoji>) {
val emojiItemWidth = context.resources.getDimensionPixelSize(R.dimen.emoji_item_size)
val emojiTopBarElevation = context.resources.getDimensionPixelSize(R.dimen.emoji_top_bar_elevation).toFloat()
mEmojiPaletteHolder!!.emojis_list.apply {
layoutManager = AutoGridLayoutManager(context, emojiItemWidth)
adapter = EmojisAdapter(context = context, items = emojis) { emoji ->
mOnKeyboardActionListener!!.onText(emoji.value)
vibrateIfNeeded()
}
onScroll {
mEmojiPaletteHolder!!.emoji_palette_top_bar.elevation = if (it > 4) emojiTopBarElevation else 0f
}
}
}
private fun closing() {
if (mPreviewPopup.isShowing) {
mPreviewPopup.dismiss()

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M22,3L7,3c-0.69,0 -1.23,0.35 -1.59,0.88L0,12l5.41,8.11c0.36,0.53 0.9,0.89 1.59,0.89h15c1.1,0 2,-0.9 2,-2L24,5c0,-1.1 -0.9,-2 -2,-2zM22,19L7.07,19L2.4,12l4.66,-7L22,5v14zM10.41,17L14,13.41 17.59,17 19,15.59 15.41,12 19,8.41 17.59,7 14,10.59 10.41,7 9,8.41 12.59,12 9,15.59z" />
</vector>

View File

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M15.5,9.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0" />
<path
android:fillColor="#FFFFFFFF"
android:pathData="M8.5,9.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0" />
<path
android:fillColor="#FFFFFFFF"
android:pathData="M12,18c2.28,0 4.22,-1.66 5,-4H7C7.78,16.34 9.72,18 12,18z" />
<path
android:fillColor="#FFFFFFFF"
android:pathData="M11.99,2C6.47,2 2,6.48 2,12c0,5.52 4.47,10 9.99,10C17.52,22 22,17.52 22,12C22,6.48 17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8c0,-4.42 3.58,-8 8,-8s8,3.58 8,8C20,16.42 16.42,20 12,20z" />
</vector>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners android:radius="@dimen/normal_margin" />
</shape>
</item>
</ripple>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<com.simplemobiletools.commons.views.MyTextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/emoji_value"
android:layout_width="@dimen/emoji_item_size"
android:layout_height="@dimen/emoji_item_size"
android:background="@drawable/ripple_all_corners_medium"
android:gravity="center"
android:textSize="@dimen/emoji_text_size"
tools:text="😇" />

View File

@ -105,6 +105,100 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<RelativeLayout
android:id="@+id/emoji_palette_holder"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clickable="true"
android:focusable="true"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/toolbar_holder">
<RelativeLayout
android:id="@+id/emoji_palette_top_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical">
<ImageView
android:id="@+id/emoji_palette_close"
android:layout_width="@dimen/toolbar_icon_height"
android:layout_height="@dimen/toolbar_icon_height"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/medium_margin"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/emojis"
android:padding="@dimen/small_margin"
android:src="@drawable/ic_arrow_left_vector" />
<TextView
android:id="@+id/emoji_palette_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/medium_margin"
android:layout_toEndOf="@+id/emoji_palette_close"
android:ellipsize="end"
android:lines="1"
android:text="@string/emojis"
android:textSize="@dimen/big_text_size" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/emoji_content_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/emoji_palette_bottom_bar"
android:layout_below="@+id/emoji_palette_top_bar">
<com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/emojis_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:padding="@dimen/small_margin" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/emoji_palette_bottom_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:gravity="center_vertical">
<TextView
android:id="@+id/emoji_palette_mode_change"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/medium_margin"
android:background="@drawable/keyboard_key_selector"
android:padding="@dimen/normal_margin"
android:text="@string/abc" />
<ImageView
android:id="@+id/emoji_palette_backspace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/medium_margin"
android:background="@drawable/keyboard_key_selector"
android:padding="@dimen/normal_margin"
android:src="@drawable/ic_clear_outline_vector" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/clipboard_manager_holder"
android:layout_width="match_parent"

View File

@ -31,6 +31,9 @@
<string name="show_popup">إظهار نافذة منبثقة عند الضغط على المفاتيح</string>
<string name="vibrate_on_keypress">يهتز عند ضغط الزر</string>
<string name="keyboard_language">لغة لوحة المفاتيح</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Показване на изскачащ прозорец при натискане на клавиш</string>
<string name="vibrate_on_keypress">Вибриране при натискане на клавиш</string>
<string name="keyboard_language">Език на клавиатурата</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Mostra una finestra emergent en prémer les tecles</string>
<string name="vibrate_on_keypress">Vibra en prémer les tecles</string>
<string name="keyboard_language">Idioma del teclat</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Zobrazit vyskakovací okno při stisknutí klávesy</string>
<string name="vibrate_on_keypress">Vibrovat při stisknutí klávesy</string>
<string name="keyboard_language">Jazyk klávesnice</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Vis en popup ved tastetryk</string>
<string name="vibrate_on_keypress">Vibrér ved tastetryk</string>
<string name="keyboard_language">Tastatursprog</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Ein Popup bei Tastendruck anzeigen</string>
<string name="vibrate_on_keypress">Bei Tastendruck vibrieren</string>
<string name="keyboard_language">Tastatursprache</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Εμφάνιση ανάδυσης στο πάτημα πλήκτρων</string>
<string name="vibrate_on_keypress">Δόνηση στο πάτημα πλήκτρου</string>
<string name="keyboard_language">Γλώσσα πληκτρολογίου</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Agrandar la tecla al pulsarla</string>
<string name="vibrate_on_keypress">Vibrar al pulsar una tecla</string>
<string name="keyboard_language">Idioma del teclado</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Klahvivajutusel näita hüpikakent</string>
<string name="vibrate_on_keypress">Klahvivajutusel kasuta värinat</string>
<string name="keyboard_language">Klavituuri keel</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Afficher une fenêtre contextuelle en cas de pression sur une touche</string>
<string name="vibrate_on_keypress">Vibrer lorsqu\'une touche est pressée</string>
<string name="keyboard_language">Langue du clavier</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Prikaži skočni prozor prilikom pritiskanja tipke</string>
<string name="vibrate_on_keypress">Vibriraj prilikom pritiskanja tipke</string>
<string name="keyboard_language">Jezik tipkovnice</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Tampilkan sebuah popup pada penekanan tombol</string>
<string name="vibrate_on_keypress">Getar pada penekanan tombol</string>
<string name="keyboard_language">Bahasa keyboard</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Mostra un popup alla pressione di un tasto</string>
<string name="vibrate_on_keypress">Vibra premendo un tasto</string>
<string name="keyboard_language">Lingua della tastiera</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">הצג חלון קופץ בלחיצת מקש</string>
<string name="vibrate_on_keypress">רטט בלחיצה על המקש</string>
<string name="keyboard_language">שפת מקלדת</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">キー入力時にポップアップを表示する</string>
<string name="vibrate_on_keypress">キー入力時にバイブする</string>
<string name="keyboard_language">キーボードの言語</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Pop-up tonen bij toetsaanslagen</string>
<string name="vibrate_on_keypress">Trillen bij toetsaanslagen</string>
<string name="keyboard_language">Toetsenbordtaal</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Pokazuj wyskakujące okienko przy naciśnięciu klawisza</string>
<string name="vibrate_on_keypress">Wibracja przy naciśnięciu klawisza</string>
<string name="keyboard_language">Język klawiatury</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Mostrar pop-up ao digitar</string>
<string name="vibrate_on_keypress">Vibrar ao digitar</string>
<string name="keyboard_language">Idioma do teclado</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Mostrar notificação pop-up ao premir tecla</string>
<string name="vibrate_on_keypress">Vibrar ao premir tecla</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Afișați o fereastră pop-up la apăsarea unei taste</string>
<string name="vibrate_on_keypress">Vibrează la apăsarea tastelor</string>
<string name="keyboard_language">Limba tastaturii</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Показ ввода по нажатию</string>
<string name="vibrate_on_keypress">Вибрация по нажатию</string>
<string name="keyboard_language">Язык клавиатуры</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Zobraziť detail znaku pri stlačení</string>
<string name="vibrate_on_keypress">Vibrovať pri stlačení</string>
<string name="keyboard_language">Jazyk klávesnice</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Visa en popupp vid knapptryck</string>
<string name="vibrate_on_keypress">Vibrera på knapptryck</string>
<string name="keyboard_language">Tangentbordsspråk</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Tuşa basıldığında bir açılır menü göster</string>
<string name="vibrate_on_keypress">Tuşa basıldığında titret</string>
<string name="keyboard_language">Klavye dili</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">Показувати popup при натисканні</string>
<string name="vibrate_on_keypress">Вібрувати при натисканні</string>
<string name="keyboard_language">Мова клавіатури</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -31,6 +31,9 @@
<string name="show_popup">按键时显示弹框</string>
<string name="vibrate_on_keypress">按键时振动</string>
<string name="keyboard_language">键盘语言</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -32,6 +32,9 @@
<string name="show_popup">按下按鍵時顯示彈出效果</string>
<string name="vibrate_on_keypress">按下按鍵時震動</string>
<string name="keyboard_language">鍵盤語言</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@ -8,8 +8,11 @@
<dimen name="key_height">60dp</dimen>
<dimen name="vertical_correction">-10dp</dimen>
<dimen name="clip_pin_size">28dp</dimen>
<dimen name="emoji_item_size">46dp</dimen>
<dimen name="emoji_top_bar_elevation">4dp</dimen>
<dimen name="keyboard_text_size">22sp</dimen>
<dimen name="preview_text_size">26sp</dimen>
<dimen name="label_text_size">16sp</dimen> <!-- text size used at keys with longer labels, like "123" -->
<dimen name="emoji_text_size">28sp</dimen>
</resources>

View File

@ -31,6 +31,9 @@
<string name="show_popup">Show a popup on keypress</string>
<string name="vibrate_on_keypress">Vibrate on keypress</string>
<string name="keyboard_language">Keyboard language</string>
<!-- Emojis -->
<string name="emojis">Emojis</string>
<string name="abc">ABC</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res