2022寒假家庭记账本开发记录07

本篇是2022寒假家庭记账本开发记录06,本篇通过B站up主——写BUG的狐狸,来学习制作简约家庭记账本。如下是我今日的开发进程:

今天我绘制了自定义软键盘和逻辑编写02:

首先建立一个包Utils,然后在里面建一个类KeyBoardUtils,进行对软键盘的逻辑编写,其源代码如下:

package com.example.csjjsb.utils;

import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.text.Editable;
import android.text.InputType;
import android.view.View;
import android.widget.EditText;

import com.example.csjjsb.R;

public class KeyBoardUtils {
private final Keyboard k1;
private KeyboardView keyboardView;
private EditText editText;

public interface OnEnsureListener {
public void onEnsure();

}
OnEnsureListener onEnsureListener;

public void setOnEnsureListener(OnEnsureListener onEnsureListener) {
this.onEnsureListener = onEnsureListener;
}

public KeyBoardUtils(KeyboardView keyboardView, EditText editText) {
this.keyboardView = keyboardView;
this.editText = editText;
this.editText.setInputType(InputType.TYPE_NULL);
k1 = new Keyboard(this.editText.getContext(), R.xml.key);


this.keyboardView.setKeyboard(k1);
this.keyboardView.setEnabled(true);
this.keyboardView.setPreviewEnabled(false);
this.keyboardView.setOnKeyboardActionListener(listener);
}


KeyboardView.OnKeyboardActionListener listener = new KeyboardView.OnKeyboardActionListener() {
@Override
public void onPress(int i) {

}

@Override
public void onRelease(int i) {

}

@Override
public void onKey(int primaryCode, int[] keyCodes) {
Editable editable = editText.getText();
int start = editText.getSelectionStart();
switch (primaryCode){
case Keyboard.KEYCODE_DELETE:
if (editable!=null &&editable.length()>0) {
if (start>0) {
editable.delete(start-1,start);
}
}
break;
case Keyboard.KEYCODE_CANCEL:
editable.clear();
break;
case Keyboard.KEYCODE_DONE:
onEnsureListener.onEnsure();
break;
default:
editable.insert(start,Character.toString((char)primaryCode));
break;
}

}

@Override
public void onText(CharSequence charSequence) {

}

@Override
public void swipeLeft() {

}

@Override
public void swipeRight() {

}

@Override
public void swipeDown() {

}

@Override
public void swipeUp() {

}
};

public void showKeyboard(){
int visibility = keyboardView.getVisibility();
if (visibility == View.INVISIBLE||visibility == View.GONE) {
keyboardView.setVisibility(View.VISIBLE);
}
}

public void hideKeyboard(){
int visibility = keyboardView.getVisibility();
if (visibility == View.VISIBLE||visibility == View.INVISIBLE) {
keyboardView.setVisibility(View.GONE);
}
}
}
posted @ 2022-02-09 19:06  一个小弱鸡  阅读(40)  评论(0)    收藏  举报