# vehicle-keyboard-android **Repository Path**: iRainIoT/vehicle-keyboard-android ## Basic Information - **Project Name**: vehicle-keyboard-android - **Description**: 停车王专用车牌键盘 - Android - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 68 - **Forks**: 18 - **Created**: 2017-11-10 - **Last Updated**: 2025-06-18 ## Categories & Tags **Categories**: android-modules **Tags**: None ## README # 停车王车牌键盘 VehicleKeyboard - Android `VehicleKeyboard`是停车王品牌的各端产品线的基础组件,专为提高中国车牌号码输入速度而定制开发的专用键盘组件。 为停车行业的用户输入车牌号码,提供非常便捷有效的输入方式。 包括以下三个项目: - `Android` Android项目,为Android客户端定制包括输入组件、键盘组件及相关控制逻辑实现; - `iOS` iOS客户端项目,为iOS客户端定制包括输入组件、键盘组件及相关控制逻辑实现; - `JavaScript(Vue.js)` JavaScript(Vue.js)项目,为H5页面定制,包括Web、微信、支付宝等,同样包括输入组件、键盘组件及相关控制逻辑实现 ## 零、项目主页 ### Android 版本 - [GitHub项目主页](https://github.com/parkingwang/vehicle-keyboard-android) - [OSChina项目主页](https://gitee.com/iRainIoT/vehicle-keyboard-android) ### iOS 版本 - [GitHub项目主页](https://github.com/parkingwang/vehicle-keyboard-ios) - [OSChina项目主页](https://gitee.com/iRainIoT/vehicle-keyboard-ios) ### JavaScript Vue.js 版本 - [GitHub项目主页](https://github.com/parkingwang/vehicle-keyboard-js) - [OSChina项目主页](https://gitee.com/iRainIoT/vehicle-keyboard-js) ### 兼容性声明 **注意:** 当前版本v0.5,已修改为Java原生实现键盘逻辑,不再使用Javascript。项目包结构已发生重大修改,不再向0.4及以下版本兼容。 ![Gif](./pwk_keyboard_usage.gif) ### 车牌号码规则 [中国车牌号码编码规则全解](http://yoojia.xyz/2018/05/09/chinese-vehicle-number/) ### 支持输入车牌类型 支持中华人民共和国现行绝大部分车牌号码类型: 1. 民用蓝牌、黄牌; 2. 新能源车牌; 3. 港澳车牌; 4. 武警车牌; 5. 军队车牌; 6. 新旧大使馆车牌; 7. 新旧领事馆车牌; 8. 民航车牌; ## 一、添加到项目 增加仓库地址: ```groovy repositories { jcenter() } ``` 添加库依赖: ```groovy implementation 'com.parkingwang:keyboard:0.6.1' // OR compile 'com.parkingwang:keyboard:0.6.1' ``` ## 二、使用组件 ### 2.1 车牌号码输入组件 InputView ![](./PWK_INPUT_VIEW.png) InputView是用于手动输入车牌的组件,提供7-8个用户可选择修改的输入框,如上图所示。 在XML中放置输入组件: ```xml ``` ### 2.2 车牌号码键盘组件 - KeyboardView ![](./pwk_keyboard_view_01.png) ![](./pwk_keyboard_view_02.png) KeyboardView是车牌输入键盘组件,提供按车牌类型显示一定规则的键盘布局供用户点击,如上图所示。 在XML中放置键盘组件: ```xml ``` ### 2.3 输入框和键盘控制器 - KeyboardInputController 在代码中绑定输入组件与键盘的关联: **使用弹出键盘** 详见 MainActivity 的演示代码。见地址:[](./app/src/main/java/com/parkingwang/vehiclekeyboard/demo/MainActivity.java) ```java // Init Views // 创建弹出键盘 mPopupKeyboard = new PopupKeyboard(this); // 弹出键盘内部包含一个KeyboardView,在此绑定输入两者关联。 mPopupKeyboard.attach(mInputView, this); // KeyboardInputController提供一个默认实现的新能源车牌锁定按钮 mPopupKeyboard.getController() .setDebugEnabled(true) .bindLockTypeProxy(new KeyboardInputController.ButtonProxyImpl(lockTypeButton) { @Override public void onNumberTypeChanged(boolean isNewEnergyType) { super.onNumberTypeChanged(isNewEnergyType); if (isNewEnergyType) { lockTypeButton.setTextColor(getResources().getColor(android.R.color.holo_green_light)); } else { lockTypeButton.setTextColor(getResources().getColor(android.R.color.black)); } } }); ``` **不弹出键盘,直接显示** ```java // 使用 KeyboardInputController 来关联 mController = KeyboardInputController .with(mKeyboardView, inputView); mController.useDefaultMessageHandler(); ``` ## 三、键盘功能特性设置 ### 3.1 设置是否显示“确定”键 根据需要,你可以通过调用KeyboardEngine的`setHideOKKey(boolean)`来设置是否隐藏“确定”键。 ```java mPopupKeyboard.getKeyboardEngine().setHideOKKey(mHideOKKey); ``` ### 3.2 优先显示周边省份 根据需要,在不同地区的用户,输入车牌号码时,可以根据当地地理位置,显示周边省份的简称。 获取地理位置需要的定位功能,需要你外部调用定位API,获取到对应的省份名称后,设置到KeyboardEngine中。 使用如下代码: ```java mPopupKeyboard.getKeyboardEngine().setLocalProvinceName("广东省"); ``` ### 3.3 设置键盘按下时的气泡: 1. 正确地显示气泡 由于顶层按键的气泡会显示到键盘之外,因此需要键盘所在的父布局增加以下属性(如果气泡范围超出父布局,则需往上递归设置): ```xml android:clipChildren="false" ``` 2. 不显示气泡 ```java mKeyboardView.setShowBubble(false); ``` ## 四、键盘样式设置 ### 4.1 设置键盘按钮文字大小 在Java代码中添加以下设置: ```java mKeyboardView.setCNTextSize(float); //设置中文字体大小 mKeyboardView.setENTextSize(float); //设置英文字母或数字字体大小 ``` ### 4.2 设置键盘主题颜色 在colors.xml中覆盖以下颜色值以修改键盘主题色 ```xml #418AF9 #3A7CE0 ``` ### 4.3 设置输入组件字体大小: ```xml ``` ### 4.4 设置输入组件的样式 默认提供两种输入组件样式: #### 4.4.1. 混合紧排样式(默认样式) - MIXED ![](./PWK_INPUT_MIXED_STYLE.png) ```xml