安卓系统记账本app第四天

抱歉今天稍微晚了一点,主要是我自己眼瞎看错了一个东西导致原地踏步好长时间。

今天先完成了安卓系统记账本app第四天下面创建xml和里面的key.xml

 

key.xml

<?xml version="1.0" encoding="utf-8"?>
<!--keyHeight 每一个按键高度 keyWidth 每一个按键宽度25%-->
<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 android:codes="50" android:keyLabel="2"/>
        <Key android:codes="51" android:keyLabel="3"/>
        <Key android:codes="-5" android:keyLabel="删除"/>
    </Row>
    <Row>
        <Key android:codes="52" android:keyLabel="4"/>
        <Key android:codes="53" android:keyLabel="5"/>
        <Key android:codes="54" android:keyLabel="6"/>
        <Key android:codes="-4" android:keyHeight="150dp" android:keyLabel="确定"/>
    </Row>
    <Row>
        <Key android:codes="55" android:keyLabel="7"/>
        <Key android:codes="56" android:keyLabel="8"/>
        <Key android:codes="57" android:keyLabel="9"/>
    </Row>
    <Row>
        <Key android:codes="-3" android:keyLabel="清零"/>
        <Key android:codes="48" android:keyLabel="0"/>
        <Key android:codes="46" android:keyLabel="."/>
    </Row>


</Keyboard>

主要就是进行键盘的一个编写

然后就是安卓系统记账本app第四天

 

 Java下的工具类和工具包

KeyBoardUtils

package com.hui.asd.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.hui.asd.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 primaryCode) {
        }
        @Override
        public void onRelease(int primaryCode) {
        }
        @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 text) {
        }
        @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);
        }
    }
}

就是设置了一个新的键盘,然后键盘样式,预览,主要就是监听,下面是关于删除清零完成的监听

 

上一篇:手写迷你版BlockingQueue阻塞队列


下一篇:Educational Codeforces Round 112 (Rated for Div. 2)