temas teclado tactil para mejor grande gboard descargar celular android keyboard android-custom-view android-softkeyboard android-input-method

android - mejor - teclado para celular tactil



Creando un teclado personalizado para Android (1)

Para personalizar el teclado, deberá modificar su "qwerty" en la carpeta xml y el teclado en la carpeta de diseño. Voy a mostrar algunos ejemplos:

Esto va en la carpeta de diseño

<?xml version="1.0" encoding="UTF-8"?> <com.example.keyboard.MyKeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:keyPreviewLayout="@layout/preview" android:keyBackground="@drawable/key_selector" android:shadowRadius="0.0" android:keyTextColor="#000000" />

Y esto va en la carpeta xml:

<?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:keyHeight="8%p"> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyWidth="9.6%p"> <Key android:codes="113" android:keyLabel="q" /> <Key android:codes="119" android:keyLabel="w" /> <Key android:codes="101" android:keyLabel="e" /> <Key android:codes="114" android:keyLabel="r" /> <Key android:codes="116" android:keyLabel="t" /> <Key android:codes="121" android:keyLabel="y" /> <Key android:codes="117" android:keyLabel="u" /> <Key android:codes="105" android:keyLabel="i" /> <Key android:codes="111" android:keyLabel="o" /> <Key android:codes="112" android:keyLabel="p" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyWidth="9.6%p"> <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="5%p" /> <Key android:codes="115" android:keyLabel="s" /> <Key android:codes="100" android:keyLabel="d" /> <Key android:codes="102" android:keyLabel="f" /> <Key android:codes="103" android:keyLabel="g" /> <Key android:codes="104" android:keyLabel="h" /> <Key android:codes="106" android:keyLabel="j" /> <Key android:codes="107" android:keyLabel="k" /> <Key android:codes="108" android:keyLabel="l" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyWidth="9.6%p"> <Key android:codes="3" android:keyIcon="@drawable/keyboard_shift_off_normal" android:keyWidth="13.7%p"/> <Key android:codes="122" android:keyLabel="z" android:horizontalGap="1%p"/> <Key android:codes="120" android:keyLabel="x" /> <Key android:codes="99" android:keyLabel="c" /> <Key android:codes="118" android:keyLabel="v" /> <Key android:codes="98" android:keyLabel="b" /> <Key android:codes="110" android:keyLabel="n" /> <Key android:codes="109" android:keyLabel="m" /> <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete_dim" android:keyWidth="13.7%p" android:horizontalGap="1%p"/> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyWidth="9.6%p"> <Key android:codes="-16" android:keyIcon="@drawable/keyboard_symbol" android:keyWidth="18.7%p"/> <Key android:codes="44" android:keyLabel="," android:horizontalGap="1%p"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_feedback_space" android:keyWidth="40%p"/> <Key android:codes="46" android:keyLabel="."/> <Key android:codes="-3" android:keyIcon="@drawable/keyboard_go" android:keyWidth="18.5%p" android:horizontalGap="1%p"/> </Row> </Keyboard>

Como dijiste, puedes extender una clase desde el diseño del teclado, pero es más para personalizar eventos de teclado, como onTouch, onLongKeyPress,

Bueno, es posible que haya visto algunas preguntas como preguntar por esto. Pero al leer todas esas preguntas / respuestas y casi todas las páginas web de entrada de Android en Google, todavía estoy en problemas.

Mi objetivo final es crear un teclado personalizado. Pero, por supuesto, el mío tendrá métodos de entrada especiales para cierto idioma.

Pero esta vez, todo lo que quiero es mostrar mi vista personalizada cuando se abre el teclado. Pude mostrar el diseño predeterminado basado en un archivo qwerty.xml, que es algo como esto.

xml / qwerty.xml

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:horizontalGap="0px" android:verticalGap="0px" android:keyHeight="60dp" > <Row android:rowEdgeFlags="bottom"> <Key android:codes="999" android:keyLabel="Settings" android:keyWidth="20%" android:keyEdgeFlags="left"/> <Key android:codes="44" android:keyLabel="," android:keyWidth="7%p" /> <Key android:codes="47" android:keyLabel="/" android:keyWidth="7%p" /> <Key android:codes="32" android:keyLabel="SPACE" android:keyWidth="30%p" android:isRepeatable="true"/> <Key android:codes="-5" android:keyLabel="DEL" android:keyWidth="18%p" android:isRepeatable="true"/> <Key android:codes="-4" android:keyLabel="DONE" android:keyWidth="18%p" android:keyEdgeFlags="right"/> </Row>

Y en mi clase, que amplía InputMethodService, tengo este código que crea una vista de entrada.

private KeyboardView myKeyView; private Keyboard keyboard; @Override public View onCreateInputView() { myKeyView = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null); keyboard = new Keyboard(this, R.xml.qwerty); myKeyView.setKeyboard(keyboard); myKeyView.setOnKeyboardActionListener(this); return myKeyView; }

y por supuesto, porque tuve problemas al aplicar mi vista personalizada a mi fuente. Solo hice un esfuerzo en el otro lado. Cuando se presiona la tecla Configuración en xml,

<Key android:codes="999" android:keyLabel="Settings" android:keyWidth="20%" android:keyEdgeFlags="left"/>

llamará a SettingsActivity

@Override public void onKey(int primaryCode, int[] keyCodes) { if(primaryCode == 999) { openSettings(); } } public void openSettings() { Intent intent = new Intent(this, WRKeySettings.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }

Funciona muy bien hasta aquí, pero estoy en este problema de vista.

Lo que creo al leer los desarrolladores de android y algunos de los artículos es que, podría extender KeyboardView para hacer mi vista personalizada y en este método, podría dibujar claves de alguna manera con onDraw (). Pero estoy teniendo tantos problemas al hacer esto.

Cualquier sugerencia estará contento. Gracias.