首页 > 其他分享 >2.20

2.20

时间:2024-02-20 15:01:41浏览次数:29  
标签:editText void keyboardView Override import 2.20 public

今天开发安卓软件记账本,首先我们从阿里巴巴矢量库里找到所需要的图标,并且打包

我们在idea里创建一个Android项目,将图片各分到不同的文件夹里,然后再layout里创建几个主要的页面布局,具体效果如下

 同时今天还编写了小键盘

 然后通过一个java类来实现自定义小键盘的各项功能

package com.zhen.accountbook.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.zhen.accountbook.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 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() {
        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.INVISIBLE || visibility == View.VISIBLE) {
            keyboardView.setVisibility(View.GONE);
        }
    }
}

今天就开发到这里,明天继续开发。

 

标签:editText,void,keyboardView,Override,import,2.20,public
From: https://www.cnblogs.com/zzqq1314/p/18023133

相关文章

  • 算法模板 v1.4.2.20240129
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 算法模板 v1.3.2.20240124
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 大二打卡(12.20)
    uml作业:逻辑视图建模:[系统边界类与系统控制类]系统边界类主要是指系统与用户交互界面有关的类。身份识别门禁子系统中涉及与用户交互的界面类有3个:(1)待机界面类:在镜头前没有人脸需要识别时,待机暂停图像信息的录入与识别。(2)人脸面部信息录入窗口类:开启摄像头的信息录入功能......
  • 雅礼 2023.12.20 习题课记录(讲解版)
    雅礼\(2023.12.20\)习题课记录(讲解版)前言AlwaysCF,NeverAT。又双是CF题,只能说“水”,AK了。水题(只放代码)B-TwoVessels(CF1872A)有分别装有\(a,b\)单位水的两个杯子,容量无限大。现在有一个勺子,容量为\(c\),每次可以从一个杯子里舀一勺不超过\(c\)单位的水(\(c\)......
  • 12.20~12.21
    昨天奥赛课帮同学调最短路,原理大概就是修改一下dij,结果一直没整出来,以为是思路假了,结果是他板子存图出锅了\(“我可是一个个看着书敲的,肯定没问题”\)JD说的还挺对,这话就不能信奥赛自习终于把题调出来了,发现是返回值的时候接收的那个变量根本就不对,真服了12.21上午好消息......
  • 2023.12.20 日记
    挺久没写的了。防止这里长草来写一点。上周并没有回家。周一去参加入团仪式,晚上回到纪中,汤老师找我谈话,本来以为是很严肃的一次警告,没想到,她和我谈了很多人生的意义。包括她的过去,我的现在。最近这一年我一直处于一种迷茫里。现在好了很多。这确实是一个负责的老师。老师分为......
  • 2023.12.20
    复习软件设计,明天就要考试了,加油!结构型模式(7种)适配器模式例子仿生机器人、加密适配器桥接模式例子模拟毛笔组合模式例子文件和文件夹水果盘装饰模式例子变形金刚、多重加密系统外观模式(门面模式) 例子电源总开关享元模式定义运用共享技术有效地支......
  • 12.20
    一上来看见\(crimson000\)的闲话给我看舍了。一直不会\(D\)人现在会了......
  • 2023.12.20——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.设计模式明日计划:学习......
  • 12.20每日总结
    今天复习了软件设计模式软件设计模式是在软件工程领域中,针对特定问题所提出的一套经过反复验证、被广泛接受并被证明能够解决相应问题的解决方案。这些解决方案通常描述了在特定情境下,如何以最佳的方式组织和结构化代码,以解决软件设计和开发中常见的重复性问题。设计模式不是一......