前言
也是最近想写个demo玩玩,不知道写哪个方面的好,就随便写了一个自定义的键盘,比较简单,但是做了封装,支持jitpack库依赖(这也是我第一次开源自己的库,比较水的一个开源项目,仅供学习使用)。
概述
主要完成了以下功能:
1.自定义数字键盘
2.切换到随机数字键盘
3.自定义确定和删除等键(向外抛出接口,感觉设计的挺好)
下面先看下运行效果吧
使用方法
1.在项目build.gradle文件中添加jitpack,添加jitpcak就够了。
allprojects {
repositories {
jcenter()
maven { url 'https://jitpack.io' }
}
}
2.在module 的build.gradle文件添加依赖
compile 'com.github.Simon986793021:NumberKeyboard:v1.0'
3.在布局文件中添加布局
<com.wind.keyboard.OfoKeyboardView
android:id="@+id/keyboard_view"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:paddingTop="0dp"
android:focusableInTouchMode="true"
android:keyBackground="@drawable/bg_keyboardview"
android:keyPreviewOffset="0dp"
android:keyTextColor="#000"
android:shadowColor="#fff"
android:shadowRadius="0.0"
android:layout_alignParentBottom="true"
/>
4.在MainActivity调用。
editText= (EditText) findViewById(R.id.et_numberplate);
changebutton= (Button) findViewById(R.id.bt_change_keyboard);
final OfoKeyboard keyboard = new OfoKeyboard(MainActivity.this);//获取到keyboard对象
changebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
keyboard.attachTo(editText,true);//eiditext绑定keyboard,true表示随机数字
}
});
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
keyboard.attachTo(editText,false);//eiditext绑定keyboard,false表示普通数字键盘
}
});
/*
确定按钮
*/
keyboard.setOnOkClick(new OfoKeyboard.OnOkClick() {
@Override
public void onOkClick() {
Log.i(">>>>>>","点击了确定");
Toast.makeText(MainActivity.this,editText.getText().toString(),Toast.LENGTH_SHORT).show();
}
});
//隐藏键盘按钮
keyboard.setOnCancelClick(new OfoKeyboard.OnCancelClcik() {
@Override
public void onCancelClick() {
Toast.makeText(MainActivity.this,"隐藏键盘",Toast.LENGTH_SHORT).show();
}
});
只需要这些简单的代码就能够实现一个自己定义的键盘了。
实现过程
1.新建一个keyboard布局
在看这个代码之前需要了解keyboard的属性:
不清楚属性,怎么画页面,不懂的请移步这篇博客
在 res 新建一个xml文件,然后在xml新建一个keyboard.xml
里面代码如下
<?xml version="1.0" encoding="utf-8"?>
<Keyboard
xmlns:android="http://schemas.android.com/apk/res/android"
android:keyHeight="9%p"
android:keyWidth="25%p"
android:horizontalGap="0dp">
<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:keyHeight="18%p"
android:keyEdgeFlags="right"
android:isRepeatable