每日记录2022.02.27(七)
今天上课,老师讲了软件工程的基本概念,对于一个软件的开发,并不只是客户需要什么就做什么,其中会遇到很多问题,在这些问题需要靠我们自己去考虑。其中需要我们去改变的思路就是,当一个项目出现BUG时,并不意味着他就是不对的,并没有什么完美的编程BUG是不可能避免的。
课上编写了单词接龙链的代码书写,思考如何进行代码编写。
今天学习了软键盘的编写。
<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyHeight="50dp"
android:keyWidth="25%p"
android:horizontalGap="1px"
android:verticalGap="1px"
>
<Row>
<Key android:codes="49" android:keyLabel="1"></Key>
<Key android:codes="50" android:keyLabel="2"></Key>
<Key android:codes="51" android:keyLabel="3"></Key>
<Key android:codes="-5" android:keyLabel="删除"></Key>
</Row>
<Row>
<Key android:codes="52" android:keyLabel="4"></Key>
<Key android:codes="53" android:keyLabel="5"></Key>
<Key android:codes="54" android:keyLabel="6"></Key>
<Key android:codes="-4" android:keyHeight="150dp" android:keyLabel="确定"></Key>
</Row>
<Row>
<Key android:codes="55" android:keyLabel="7"></Key>
<Key android:codes="56" android:keyLabel="8"></Key>
<Key android:codes="57" android:keyLabel="9"></Key></Row>
<Row>
<Key android:codes="-3" android:keyLabel="清零"></Key>
<Key android:codes="48" android:keyLabel="0"></Key>
<Key android:codes="46" android:keyLabel="."></Key></Row>
</Keyboard>
下面是java文件;
package com.example.xx.util;
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.xx.R;
public class KeyBordUtil {
private final Keyboard keyboard;
private KeyboardView keyboardView;
private EditText editText;
private int visibility;
private int visibility1;
public interface onEnsureListener{
public void onEnsure();
}
onEnsureListener onEnsureListener;
public void setOnEnsureListener(onEnsureListener onEnsureListener){
this.onEnsureListener=onEnsureListener;
}
public KeyBordUtil(KeyboardView keyboardView, EditText editText) {
this.keyboardView = keyboardView;
this.editText = editText;
this.editText.setInputType(InputType.TYPE_NULL);//取消系统键盘
keyboard = new Keyboard(this.editText.getContext(), R.xml.key);
this.keyboardView.setKeyboard(keyboard);//键盘样式
this.keyboardView.setEnabled(true);
this.keyboardView.setPreviewEnabled(false);
this.keyboardView.setOnKeyboardActionListener(listener);//键盘监听
}
KeyboardView.OnKeyboardActionListener listener=new KeyboardView.OnKeyboardActionListener(){
public void onPress(int primaryCode){
}
@Override
public void onRelease(int i) {
}
@Override
public void onKey(int i, int[] ints) {
Editable editable=editText.getText();
int start = editText.getSelectionStart();
switch (i){
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)i));
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(){
visibility = keyboardView.getVisibility();
if (visibility == View.INVISIBLE||visibility==View.GONE) {
keyboardView.setVisibility(View.VISIBLE);
}
}
//隐藏键盘
public void hideKeyboard(){
visibility1 = keyboardView.getVisibility();
if (visibility1== View.VISIBLE||visibility1==View.INVISIBLE) {
keyboardView.setVisibility(View.GONE);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理