android软件简约记账app开发day03-自定义键盘的书写

我们在fragment界面使用了自定义的keybroad键盘,所以今天我们来书写自定义的键盘代码

新建util包,新建keyboardutils的java类,当然在之前我们已经在项目中导入了google的material的jar包了。

package com.open.tally.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.open.tally.R;

public class KeyBoardUtils {
   private final Keyboard k1;//自定义键盘
   private KeyboardView keyboardView;
   private EditText editText;

   public interface OnEnsureListener{
       public static 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.VISIBLE||visibility==View.INVISIBLE){
           keyboardView.setVisibility(View.GONE);
      }
  }

}

android软件简约记账app开发day03-自定义键盘的书写的更多相关文章

  1. android软件简约记账app开发day08-时间对话框的书写+改bug,改bug

    android软件简约记账app开发day08-时间对话框的书写+改bug,改bug 绘制对话跨页面 在添加记账信息功能中,我提供了用户添加备注添加事件的功能,设计是点击时间会弹出一个时间对话框供用户 ...

  2. android软件简约记账app开发day05-记账页面条目代码优化和bug解决

    android软件简约记账app开发day05-记账页面条目代码优化和bug解决 今天还是因为该bug又极大的耽误了项目进程,该开发文档都要没有时间来写了. 先说bug吧,在昨天已经实现了页面图标的展 ...

  3. android软件简约记账app开发day04-记账页面条目的代码书写

    android软件简约记账app开发day04-记账页面条目的代码书写 在前三天我们完成了基本的界面展示,从今天开始,我们进入到后台逻辑代码的编写中,今天开发记账条目的代码 我们在主页面点击记一笔图标 ...

  4. android软件简约记账app开发day10-主页面模块--头信息的展示,和之后功能完善的目标。

    android软件简约记账app开发day10-主页面模块--头信息的展示,和之后功能完善的目标. 今天来写主界面头信息的展示,也就是将第一天的写的layout中的item_main_top展示到主界 ...

  5. android软件简约记账app开发day09-主页面模块,收支记账信息的展示

    android软件简约记账app开发day09-主页面模块,收支记账信息的展示 我们第一天已经绘制了记账条目的界面,也在主界面设置了LietView来展示记账条目,今天来实现记账后再主界面的展示效果 ...

  6. android软件简约记账app开发day07-备注界面完善

    android软件简约记账app开发day07-备注界面完善 ## 昨天我们已经绘制了备注页面,今天来用Java代码组装完善一下. 首先我们新建BeiZhuDialog类关联备注页面,并且实现点击接口 ...

  7. android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面

    android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面 首先写添加到数据库 在DBOpenHelper中添加创建记账表的语句 //创建记账表 sql = "c ...

  8. android软件简约记账app开发day02-收入支出明细页面绘制

    android软件简约记账app开发day02-收入支出明细页面绘制 效果图 列表界面绘制 新建layout文件-item_mainlv.xml大体使用绝对布局,嵌套相对布局,嵌套文本内容实现 < ...

  9. android软件简约记账app开发day01-今日收支明细的界面绘制

    android软件简约记账app开发day01-今日收支明细的界面绘制 导入素材 导入在阿里iconfront图标库下载的字体图标分为大小两种,分别导入到项目目录mipmap-hdpi和mipmap- ...

随机推荐

  1. sqli-labs下载与安装

    Sqli-labs 下载 Sqli-labs是一个印度程序员写的,用来学习sql注入的一个游戏教程. 博客地址为:http://dummy2dummies.blogspot.hk/, 博客当中有一些示 ...

  2. 写fstable

    mountpoint 就是挂载点./. /usr. swap 都是系统安装时分区的默认挂载点. 如果你要挂载一个新设备,你就要好好想想了,因为这个新设备将作为文件系统永久的一部分,需要根据FSSTND ...

  3. PCIe Tandem PROM 方法

    PCIe Tandem PROM 方法 什么是Tandem PROM? 简单总结:市面多数的FPGA都是SRAM型,需要在上电时从外部存储器件完成代码的加载,对于具有PCIe功能的SRAM FPGA而 ...

  4. 职场PUA

    哈哈 你这个的底层逻辑是什么? 顶层设计在哪? 最终交付价值是什么? 过程的抓手在哪里? 如何保证结果的闭环? 你比别人的亮点在哪里? 优势在哪里? 你的思考和沉淀在哪里? 你有形成自己的方法论吗?

  5. JSP是什么?有什么特点?

    JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.在Servlet当中开发嵌入html的脚本,会非常的繁琐.JSP支持在h ...

  6. 什么是Spring Cloud Bus?

    spring cloud bus 将分布式的节点用轻量的消息代理连接起来,它可以用于广播配置文件的更改或者服务直接的通讯,也可用于监控. 如果修改了配置文件,发送一次请求,所有的客户端便会重新读取配置 ...

  7. Spring的自动装配?

    在spring中,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象,使用autowire来配置自动装载模式. 在Spring框架xml配置中共有5种自动装配: ...

  8. 什么是 spring?

    Spring 是个 java 企业级应用的开源开发框架.Spring 主要用来开发 Java 应用, 但是有些扩展是针对构建 J2EE 平台的 web 应用.Spring 框架目标是简化 Java 企 ...

  9. 巧用CSS3:target 伪类制作Dropdown下拉菜单(无JS)

    原文链接:http://devework.com/css3-target-dropdown.html :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如 ...

  10. vue全家桶+axios+jsonp+es6 仿肤君试用小程序

    vue全家桶+axios+jsonp+es6 仿肤君试用小程序 把自己写的一个小程序项目用vue来实现的,代码里面有一些注释,主要使用了vue-cli,vue,vuex,vue-router,axoi ...