如何在自定义android系统键盘中使用UI元素(button.png)?

时间:2018-06-10 15:38:10

标签: android xml user-interface keyboard custom-keyboard

无法自定义我的Android系统键盘的UI:

过去几天我一直在尝试制作自定义Android系统键盘。 我试图将键盘的默认外观改为看起来更吸引人的东西。

我做了什么:

我在Adobe XD中创建了一个键盘用户界面,并尝试将其实现为自定义Android系统键盘代码,但我没有这样做,也不明白我应该做什么。

默认键盘用户界面:

default custom android keyboard ui

Adob​​e XD键盘用户界面 the keyboard ui i'm trying to implement

指导:

有关以下方面的任何帮助:

  1. 自定义android系统键盘开发
  2. 键盘用户界面从默认更改为我的版本
  3. 在Android系统键盘中实现Adobe XD UI
  4. 非常感谢。

    代码文件:

    MyInputMethodService.java:

    package com.ohmy.whatever.mykeyboard;
    
    import android.inputmethodservice.InputMethodService;
    import android.inputmethodservice.Keyboard;
    import android.inputmethodservice.KeyboardView;
    import android.text.TextUtils;
    import android.view.View;
    import android.view.inputmethod.InputConnection;
    
    public class MyInputMethodService extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
    
    
        @Override
        public View onCreateInputView() {
            KeyboardView myKeyboardView = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard_view, null);
            Keyboard myKeyboard = new Keyboard(this, R.xml.keyboard2);
            myKeyboardView.setKeyboard(myKeyboard);
            myKeyboardView.setOnKeyboardActionListener(this);
            return myKeyboardView;
        }
    
        @Override
        public void onPress(int primaryCode) {
    
        }
    
        @Override
        public void onRelease(int primaryCode) {
    
        }
    
        @Override
        public void onKey(int primaryCode, int[] keyCodes) {
            InputConnection inputConnection = getCurrentInputConnection();
    
            if (inputConnection != null) {
                switch (primaryCode) {
    
                    /*
                    case Keyboard.KEYCODE_DELETE:
                        CharSequence selectedText = inputConnection.getSelectedText(0);
                        if(TextUtils.isEmpty(selectedText)) { inputConnection.deleteSurroundingText(1, 0); }
                        else{ inputConnection.commitText("",0); }
                        break;
                        */
    
                    default:
                        char code = (char) primaryCode;
                        inputConnection.commitText(String.valueOf(code), 1);
                }
            }
    
        }
    
    
        @Override
        public void onText(CharSequence text) {
    
        }
    
        @Override
        public void swipeLeft() {
    
        }
    
        @Override
        public void swipeRight() {
    
        }
    
        @Override
        public void swipeDown() {
    
        }
    
        @Override
        public void swipeUp() {
    
        }
    }
    

    布局/ keyboard_view.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:id="@+id/keyboard_view"
        android:keyPreviewLayout="@layout/key_preview"
        android:layout_alignParentBottom="true"
        android:background="@android:color/white" >
    </android.inputmethodservice.KeyboardView>
    

    布局/ key_preview.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:gravity="center"
        android:background="@drawable/border_style"
        android:textColor="@android:color/black"
        android:textSize="30sp">
    </TextView>
    

    XML / method.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <input-method xmlns:android="http://schemas.android.com/apk/res/android">
        <subtype android:imeSubtypeMode="keyboard" />
    </input-method>
    

    XML / keyboard2.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>
            <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
            <Key android:codes="50" android:keyLabel="2"/>
            <Key android:codes="51" android:keyLabel="3"/>
            <Key android:codes="52" android:keyLabel="4"/>
            <Key android:codes="53" android:keyLabel="5"/>
            <Key android:codes="54" android:keyLabel="6"/>
            <Key android:codes="55" android:keyLabel="7"/>
            <Key android:codes="56" android:keyLabel="8"/>
            <Key android:codes="57" android:keyLabel="9"/>
            <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/>
        </Row>
        <Row>
            <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
            <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" android:keyEdgeFlags="right"/>
        </Row>
        <Row>
            <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" />
            <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"/>
            <Key android:codes="35,64" android:keyLabel="\# \@" android:keyEdgeFlags="right"/>
        </Row>
        <Row>
            <Key android:codes="-1" android:keyLabel="CAPS" android:keyEdgeFlags="left"/>
            <Key android:codes="122" android:keyLabel="z"/>
            <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="46" android:keyLabel="."/>
            <Key android:codes="63,33,58" android:keyLabel="\? ! :" android:keyEdgeFlags="right"/>
        </Row>
        <Row android:rowEdgeFlags="bottom">
            <Key android:codes="44" android:keyLabel="," android:keyWidth="10%p"  android:keyEdgeFlags="left"/>
            <Key android:codes="47" android:keyLabel="/" android:keyWidth="10%p" />
            <Key android:codes="32" android:keyLabel="SPACE" android:keyWidth="40%p" android:isRepeatable="true"/>
            <Key android:codes="-5" android:keyLabel="DEL" android:keyWidth="20%p" android:isRepeatable="true"/>
            <Key android:codes="-4" android:keyLabel="DONE" android:keyWidth="20%p" android:keyEdgeFlags="right"/>
        </Row>
    
    
    </Keyboard>
    

0 个答案:

没有答案