• Stars
    star
    244
  • Rank 165,885 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 5 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎹 KingKeyboard 是一个自定义键盘。内置了满足各种场景的键盘需求:包括但不限于混合、字母、数字、电话、身份证、车牌号等可输入场景。还支持自定义。集成简单,键盘可定制化。

KingKeyboard

Image

Download JCenter MavenCentral JitPack CI CircleCI API License Blog QQGroup

KingKeyboard for Android 是一个自定义键盘。内置了满足各种场景的键盘需求:包括但不限于混合、字母、数字、电话、身份证、车牌号等可输入场景。还支持自定义。集成简单,键盘可定制化。

Gif 展示

Image

你也可以直接下载 演示App 体验效果

引入

Gradle:

  1. 在Project的 build.gradle 里面添加远程仓库
allprojects {
    repositories {
        //...
        mavenCentral()
    }
}
  1. 在Module的 build.gradle 里面添加引入依赖项
implementation 'com.github.jenly1314:kingkeyboard:1.0.4'

以前发布至JCenter的版本

//AndroidX
implementation 'com.king.keyboard:kingkeyboard:1.0.0'

自定义按键值

 /*
  * 在KingKeyboard的伴生对象中定义了一些核心的按键值,当您需要自定义键盘时,可能需要用到
  */

 //------------------------------ 下面是定义的一些公用功能按键值
        /**
         * Shift键 -> 一般用来切换键盘大小写字母
         */
        const val KEYCODE_SHIFT = -1
        /**
         * 模式改变 -> 切换键盘输入法
         */
        const val KEYCODE_MODE_CHANGE = -2
        /**
         * 取消键 -> 关闭输入法
         */
        const val KEYCODE_CANCEL = -3
        /**
         * 完成键 -> 长出现在右下角蓝色的完成按钮
         */
        const val KEYCODE_DONE = -4
        /**
         * 删除键 -> 删除输入框内容
         */
        const val KEYCODE_DELETE = -5
        /**
         * Alt键 -> 预留,暂时未使用
         */
        const val KEYCODE_ALT = -6
        /**
         * 空格键
         */
        const val KEYCODE_SPACE = 32

        /**
         * 无作用键 -> 一般用来占位或者禁用按键
         */
        const val KEYCODE_NONE = 0

        //------------------------------

        /**
         * 键盘按键 -> 返回(返回,适用于切换键盘后界面使用,如:NORMAL_MODE_CHANGE或CUSTOM_MODE_CHANGE键盘)
         */
        const val KEYCODE_MODE_BACK = -101

        /**
         * 键盘按键 ->返回(直接返回到最初,直接返回到NORMAL或CUSTOM键盘)
         */
        const val KEYCODE_BACK = -102

        /**
         * 键盘按键 ->更多
         */
        const val KEYCODE_MORE = -103

        //------------------------------ 下面是自定义的一些预留按键值,与共用按键功能一致,但会使用默认的背景按键

        const val KEYCODE_KING_SHIFT = -201
        const val KEYCODE_KING_MODE_CHANGE = -202
        const val KEYCODE_KING_CANCEL = -203
        const val KEYCODE_KING_DONE = -204
        const val KEYCODE_KING_DELETE = -205
        const val KEYCODE_KING_ALT = -206

        //------------------------------ 下面是自定义的一些功能按键值,与共用按键功能一致,但会使用默认背景颜色

        /**
         * 键盘按键 -> 返回(返回,适用于切换键盘后界面使用,如:NORMAL_MODE_CHANGE或CUSTOM_MODE_CHANGE键盘)
         */
        const val KEYCODE_KING_MODE_BACK = -251

        /**
         * 键盘按键 ->返回(直接返回到最初,直接返回到NORMAL或CUSTOM键盘)
         */
        const val KEYCODE_KING_BACK = -252

        /**
         * 键盘按键 ->更多
         */
        const val KEYCODE_KING_MORE = -253

        /*
            用户也可自定义按键值,primaryCode范围区间为-999 ~ -300时,表示预留可扩展按键值。
            其中-399~-300区间为功能型按键,使用Special背景色,-999~-400自定义按键为默认背景色
        */

示例

代码示例

    //初始化KingKeyboard
    kingKeyboard = KingKeyboard(this,keyboardParent)
    //然后将EditText注册到KingKeyboard即可
    kingKeyboard.register(editText,KingKeyboard.KeyboardType.NUMBER)

    /*
     * 如果目前所支持的键盘满足不了您的需求,您也可以自定义键盘,KingKeyboard对外提供自定义键盘类型。
     * 自定义步骤也非常简单,只需自定义键盘的xml布局,然后将EditText注册到对应的自定义键盘类型即可
     *
     * 1. 自定义键盘Custom,自定义方法setKeyboardCustom,键盘类型为{@link KeyboardType#CUSTOM}
     * 2. 自定义键盘CustomModeChange,自定义方法setKeyboardCustomModeChange,键盘类型为{@link KeyboardType#CUSTOM_MODE_CHANGE}
     * 3. 自定义键盘CustomMore,自定义方法setKeyboardCustomMore,键盘类型为{@link KeyboardType#CUSTOM_MORE}
     *
     * xmlLayoutResId 键盘布局的资源文件,其中包含键盘布局和键值码等相关信息
     */
    kingKeyboard.setKeyboardCustom(R.xml.keyboard_custom)
//        kingKeyboard.setKeyboardCustomModeChange(xmlLayoutResId)
//        kingKeyboard.setKeyboardCustomMore(xmlLayoutResId)
    kingKeyboard.register(et12,KingKeyboard.KeyboardType.CUSTOM)
 //获取键盘相关的配置信息
 var config = kingKeyboard.getKeyboardViewConfig()

 //... 修改一些键盘的配置信息

 //重新设置键盘配置信息
 kingKeyboard.setKeyboardViewConfig(config)

 //按键是否启用震动
 kingKeyboard.setVibrationEffectEnabled(isVibrationEffectEnabled)

 //... 还有各种监听方法。更多详情,请直接使用。
    //在Activity或Fragment相应的生命周期中调用,如下所示

    override fun onResume() {
        super.onResume()
        kingKeyboard.onResume()
    }

    override fun onDestroy() {
        super.onDestroy()
        kingKeyboard.onDestroy()
    }

v1.0.2 新增:KingKeyboard.sendKey(params) 的用法示例:

        val beforeCount = 0

        kingKeyboard.register(et,KingKeyboard.KeyboardType.LICENSE_PLATE_PROVINCE)

        //通过监听输入框内容改变,来通过发送功能键来切换键盘(这里只是举例展示kingKeyboard.sendKey的用法,具体怎么用还需根据需求场景去决定)
        et.addTextChangedListener(object : TextWatcher{
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
                beforeCount = s?.length ?: 0
            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                when(s?.length){
                    0 -> {//车牌键盘:如果输入的内容长度改变为0,并且当前的键盘不是省份键盘模式时,通过发送“返回”功能按键值,让键盘自动切换到省份键盘模式
                        if(kingKeyboard.getKeyboardType() != KingKeyboard.KeyboardType.LICENSE_PLATE_PROVINCE){
                            kingKeyboard.sendKey(KingKeyboard.KEYCODE_BACK)
                        }
                    }
                    1 -> {//车牌键盘:如果输入的内容长度从0改变为1,并且当前的键盘为省份键盘模式时,通过发送“模式改变”功能按键值,让键盘自动切换到字母键盘模式
                        if(beforeCount == 0 && kingKeyboard.getKeyboardType() == KingKeyboard.KeyboardType.LICENSE_PLATE_PROVINCE){
                            kingKeyboard.sendKey(KingKeyboard.KEYCODE_MODE_CHANGE)
                        }
                    }
                }
            }

            override fun afterTextChanged(s: Editable?) {

            }

        })

相关说明

  • KingKeyboard 主要采用Kotlin编写实现,如果您的项目使用的是Java编写,集成时语法上可能稍微有点不同,除了结尾没有分号以外,对应类伴生对象中的常量,需要通过点伴生对象才能获取。
  //Kotlin 写法
  var keyCode = KingKeyboard.KEYCODE_SHIFT
  //Java 写法
  int keyCode = KingKeyboard.Companion.KEYCODE_SHIFT;

更多使用详情,请查看app中的源码使用示例或直接查看API帮助文档

相关推荐

SplitEditText 一个灵活的分割可编辑框;常常应用于 验证码输入密码输入 等场景。

版本记录

v1.0.4:2021-11-18

  • 修复动态修改默认键盘字体大小不生效问题

v1.0.3:2021-10-22

  • 优化细节

v1.0.2:2021-9-29

  • 新增 KingKeyboard.sendKey(primaryCode: Int) 方法;(支持通过发送按键的值来控制键盘)

v1.0.1:2021-9-3 (从v1.0.1开始发布至 MavenCentral)

  • 优化按键提示音策略(跟随系统的提示音设置)

v1.0.0:2020-1-16

  • KingKeyboard初始版本

赞赏

如果您喜欢KingKeyboard,或感觉KingKeyboard帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 😃

您也可以扫描下面的二维码,请作者喝杯咖啡

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

CNBlog: jenly

Github: jenly1314

加入QQ群: 20867961

More Repositories

1

ZXingLite

🔥 ZXing的精简极速版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条样式,支付宝的网格样式。几句代码轻松拥有扫码功能 ,ZXingLite让集成更简单。(扫码识别速度快如微信)
Java
3,050
star
2

KingTV

📺 【停止维护】高仿全民直播(全民TV),项目采用 MVP + RXJava + Retrofit + OKHttp + Material Design + Dagger2 + Base + Glide + GreenDao构建。因为全民TV已经凉了,导致App已经连不上了。在这里特意向你推荐MVPFrame: https://github.com/jenly1314/MVPFrame 和你值得拥有的MVVMFrame快速开发框架: https://github.com/jenly1314/MVVMFrame
Java
1,604
star
3

MLKit

🌝 MLKit是一个强大易用的工具包。通过ML Kit您可以很轻松的实现文字识别、条码识别、图像标记、人脸检测、对象检测等功能。
Java
909
star
4

AppUpdater

🚀 AppUpdater一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。(集成步骤超简单)
Java
876
star
5

WeChatQRCode

⛄ 基于OpenCV开源的微信二维码引擎移植的二维码扫码识别库
C++
617
star
6

CircleProgressView

🎡 CircleProgressView是一个圆形渐变的进度动画控件(支持外环显示刻度,内环随之变化,配置参数完全可配),动画效果纵享丝滑。
Java
447
star
7

WanAndroid

🏄 基于Architecture Components dependencies (Lifecycles,LiveData,ViewModel,Room)构建的WanAndroid开源项目。 你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Java
417
star
8

MVVMFrame

🏰 MVVMFrame for Android 是一个基于Google官方推出的JetPack构建的快速开发框架。从此构建一个MVVM模式的项目变得快捷简单。
Kotlin
369
star
9

ArcSeekBar

🎡 ArcSeekBar 一个弧形可拖动进度条控件。弧形大小,弧度,颜色渐变等配置完全可定制化
Java
313
star
10

Base

🍁 Base是针对于Android开发封装好一些常用的基类,主要包括通用的Adapter、Activity、Fragment、Dialog等、和一些常用的Util类,只为更简单。
Java
265
star
11

GiftSurfaceView

🌷 直播间送礼物拼图案动画控件
Java
238
star
12

SuperTextView

🎀 SuperTextView for Android 是一个在TextView的基础上扩展了几种动画效果的控件。
Java
187
star
13

NeverCrash

🌍 全局捕获Crash。信NeverCrash,永不Crash。
Java
183
star
14

FlutteringLayout

🎈 一个直播间点赞桃心飘动效果的控件
Java
162
star
15

UltraSwipeRefresh

🏄 一个可带来极致体验的Compose刷新组件;支持下拉刷新和上拉加载,可完美替代官方的SwipeRefresh;并且支持的功能更多,可扩展性更强。
Kotlin
137
star
16

SplitEditText

🔢 SplitEditText 是一个灵活的分割编辑框。常常应用于验证码输入 、密码输入等场景。
Java
123
star
17

MapHelper

🌏 MapHelper是一个整合了高德地图、百度地图、腾讯地图、谷歌地图等相关路线规划和导航的地图帮助类库
Kotlin
106
star
18

MVPFrame

🏰 MVPFrame for Android 是一个集合了 Retrofit2 + RXJava2 + OkHttp3 + Mosby3 二次封装构建的MVP快速开发框架,为敏捷开发而生。
Java
102
star
19

WaveView

🏄 WaveView 一个水波纹动画控件视图,支持波纹数,波纹振幅,波纹颜色,渐变色,波纹速度,波纹方向等属性完全可配。
Java
98
star
20

RadarView

🍳 RadarView for Android 是一个雷达扫描动画后,然后展示得分效果的控件。
Java
85
star
21

DrawBoard

🎨 DrawBoard 是一个自定义 View实现的画板;方便对图片进行编辑和各种涂鸦相关操作
Java
77
star
22

ANetty

✉️ ANetty 是基于Netty二次封装的Android链路通讯库,用以快速开发高性能,高可靠性的网络交互。在保证易于开发的同时还保证其应用的性能,稳定性和伸缩性。轻松实现长连接通讯。
Java
70
star
23

AppPay

💸 AppPay专注于App支付的库,几句代码轻松搞定微信支付、支付宝支付、银联支付。集成更简单。
Java
70
star
24

Location

📍 Location 是一个通过 Android 自带的 LocationManager 来实现的定位功能
Kotlin
64
star
25

KingPlayer

🎬 一个专注于 Android 视频播放器的基础库,无缝切换内核。(IjkPlayer、ExoPlayer、VlcPlayer、MediaPlayer)
Java
61
star
26

ImageViewer

🌅 ImageViewer是一个图片查看器(类似微信查看图片效果),一般用来查看图片详情或查看大图时使用,支持多张查看。简单易用。
Java
56
star
27

SuperSlidingPaneLayout

SuperSlidingPaneLayout 是基于SlidingPaneLayout扩展修改,新增几种不同的侧滑效果。
Java
55
star
28

SlideBar

SlideBar for Android 一个很好用的联系人字母快速索引
Java
51
star
29

SpinCounterView

🎡 一个类似于码表变化的旋转计数器动画控件
Java
51
star
30

ViewfinderView

🎯 ViewfinderView 是一个取景视图:主要用于渲染扫描相关的动画效果。其样式主要分为两大类:经典样式(带扫描框)、流行样式(不带扫描框);可任意定制。
Java
51
star
31

ASocket

🌐 ASocket 是一个TCP/UDP协议的封装库,方便快速实现TCP的长连接与UDP的单播、组播、广播等相关通信
Java
51
star
32

BaseUrlManager

⛵ BaseUrlManager的设计初衷主要用于开发时,有多个环境需要打包APK的场景,通过BaseUrlManager提供的BaseUrl动态设置入口,只需打一次包,即可轻松随意的切换不同的开发环境或测试环境。在打生产环境包时,关闭BaseUrl动态设置入口即可。
Java
50
star
33

AppTemplate

🎭 App快速构建模板,致力于快速开发实现App提供解决方案
Kotlin
44
star
34

CounterView

一个数字变化效果的计数器视图控件
Java
43
star
35

KingsGirls

👩 项目采用RXJava + Retrofit + OKHttp + Material Design + Base + Glide构建,数据来自gank.io。是一款以瀑布流的形式展示美女福利的App
Java
41
star
36

CameraScan

📷 CameraScan一个简化扫描识别流程的通用基础库
Java
37
star
37

DragPolygonView

⭐ 一个支持可拖动多边形,可拖动多边形的角改变其形状的任意多边形控件
Java
33
star
38

RetrofitHelper

💪 RetrofitHelper是一个支持配置多个BaseUrl,支持动态改变BaseUrl,动态配置超时时长的Retrofit帮助类
Java
32
star
39

MVVMFrameComponent

🏰 基于 MVVMFrame 框架 采用 JetPack (Lifecycle,LiveData,ViewModel,Room) + Dagger + DataBinding + Retrofit + OkHttp + Glide + Kotlin coroutines + ARouter等 为核心基础库构建的组件化方案
Kotlin
30
star
40

KingWeather

☁️ 一个基于Jetpack构建的MVVM天气预报APP。你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Kotlin
29
star
41

AWebSocket

🌐 AWebSocket一个基于okhttp封装的WebSocket,简洁易用。
Kotlin
28
star
42

SuperSwipeRefreshLayout

SuperSwipeRefreshLayout是在SwipeRefreshLayout的基础之上扩展修改,让其支持上拉刷新,基本用法与SwipeRefreshLayout一致。
Java
27
star
43

KVCache

📝 KVCache 是一个便于统一管理的键值缓存库;支持无缝切换缓存实现
Kotlin
26
star
44

GuidePage

📄 GuidePage是一个App欢迎引导页库。一般应用于首次打开App时的场景,通过引导页指南,概述App特色等相关信息。(链式调用,一行代码搞定)
Kotlin
23
star
45

CodeTextField

🔢 CodeTextField 一个使用 Compose 实现的验证码输入框
Kotlin
20
star
46

libyuv

🌈 基于Google的libyuv编译封装的YUV转换工具库,主要用途是在各种YUV与RGB之间进行相互转换、裁减、旋转、缩放、镜像等。(用法超简单)
C++
16
star
47

LoadingView

🍭 LoadingView 是一个圆弧加载过渡动画,圆弧个数,大小,弧度,渐变颜色,完全可配。
Kotlin
16
star
48

AppMonitor

🎯 AppMonitor 可以轻松的监听App的前后台状态变化;Activity的活跃状态变化;设备的开关屏状态变化
Kotlin
14
star
49

compose-component

🍇 compose-component 是一个Jetpack Compose的组件库;主要提供了一些小组件,便于快速使用。
Kotlin
11
star
50

EasyNote

📑 EasyNote 是一个遵循 Clean Architecture 分层,使用 Jetpack Compose 实现的笔记App
Kotlin
10
star
51

LogX

🚩 LogX 一个小而美的日志记录框架;好用不解释。
Kotlin
8
star
52

WordPOI

👍 WordPOI是一个将Word接口文档转换成JavaBean的工具库,主要目的是减少部分无脑的开发工作。
Java
7
star
53

GradlePublish

Gradle 一些常用配置
5
star
54

jenly1314.github.io

This is my personal blog repository. https://jenly1314.github.io
EJS
4
star
55

JavaFieldGenerator

☕ JavaFieldGenerator 是一个可以根据字符串内容快速生成Java字段的插件
Java
3
star
56

Http

Http
Java
2
star
57

KingVolley

KingVolley 是Volley的二次封装
Java
1
star
58

King

实现android基本网络通信和常用工具类封装的简易框架
Java
1
star