Пользовательская клавиатура, переход от одного вида к другому - PullRequest
0 голосов
/ 30 мая 2018

когда появляется клавиатура Android по умолчанию, это выглядит так: введите описание изображения здесь

и когда мы нажимаем "123Sym", оно становится таким:

введите описание изображения здесь

Как я могу это сделать с помощью созданной мной клавиатуры, я имею в виду переход от одного вида к другому.

Здесь мой класс Java:

public class EDMTKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener {

private KeyboardView kv;
private Keyboard keyboard;

private  boolean isCaps = false;

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

@Override
public void onPress(int i) {

}

@Override
public void onRelease(int i) {

}

@Override
public void onKey(int i, int[] ints) {

    InputConnection ic = getCurrentInputConnection();
    playClick(i);
    switch (i)
    {
        case Keyboard.KEYCODE_DELETE:
            ic.deleteSurroundingText(1,0);
        break;
        case Keyboard.KEYCODE_SHIFT:
            isCaps = !isCaps;
            keyboard.setShifted(isCaps);
            kv.invalidateAllKeys();
            break;
        case Keyboard.KEYCODE_DONE:
            //ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER));
            break;
            default:
                char code = (char)i;
                if(Character.isLetter(code) && isCaps)
                    code = Character.toUpperCase(code);
                ic.commitText(String.valueOf(code),1);
    }

}

private void playClick(int i) {

    AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);
    switch(i)
    {
        case 32:
            am.playSoundEffect(AudioManager.FX_KEYPRESS_SPACEBAR);
            break;
        case Keyboard.KEYCODE_DONE:
        case 10:
            am.playSoundEffect(AudioManager.FX_KEYPRESS_RETURN);
            break;
        case Keyboard.KEYCODE_DELETE:
            am.playSoundEffect(AudioManager.FX_KEYPRESS_DELETE);
            break;
        default: am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD);
    }
}

@Override
public void onText(CharSequence charSequence) {

}

@Override
public void swipeLeft() {

}

@Override
public void swipeRight() {

}

@Override
public void swipeDown() {

}

@Override
public void swipeUp() {

}

Я хочу, чтобы при нажатии клавиши на клавиатуре отображались символы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...