最近重構了下自定義鍵盤項目,現EasyKeyboard v1.4已釋出,歡迎star
項目介紹
EasyKeyBoardView
EasyKeyBoardView旨在幫助開發者快速實作一個自定義鍵盤,無需實作鍵盤内部的輸入邏輯,隻需關注鍵盤的
布局和輸入後的功能實作即可
功能介紹:
該庫是基于安卓原生鍵盤API實作,隻需提供布局檔案即可快速實作一個自定義鍵盤,内部已封裝好鍵盤的輸入邏輯,并提供了随機數字鍵盤,每輸入4位則空格等功能。
本庫提供了兩種不同的彈出方式:
- 鍵盤固定在底部
- 鍵盤從底部彈出(如果鍵盤遮擋了輸入框,EasyKeyBoardView會自動将輸入框頂上去)
效果圖
使用
第一步:
在你的root build.gradle中添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在 app build.gradle中添加
dependencies {
implementation 'com.github.Jay-huangjie:EasyKeyBoardView:v1.4'
}
第二步:
實作固定在底部的鍵盤
在xml中定義:
<com.jay.easykeyboard.SystemKeyboard
android:layout_width="match_parent"
android:layout_height="wrap_content"
keyboard:xmlLayoutResId="@xml/keyboard_numbers" />
其中:
keyboard_numbers
是該鍵盤的布局檔案,由使用者自己編寫,名稱可自取
關于xml裡codes的定義問題,可以參閱ASCI碼對照表來取值,找到對應的圖形編碼,對應的10進制就是我們想要的codes了
xml屬性:
屬性 | 作用 |
---|---|
keyViewbg | 用于設定鍵盤的按壓效果和按鈕之間線的粗細顔色等 |
xmlLayoutResId | 設定鍵盤的布局檔案,必須設定 |
isRandom | 是否數字随機 |
java屬性:
setXmlLayoutResId
可用于在java中指定布局
setKeyboardUI
可用來定義鍵盤上字型的UI,如顔色,大小
setKeybgDrawable
設定按壓效果檔案
setOnKeyboardActionListener
鍵盤輸入監聽
setRandomkeys
設定鍵盤數字随機,如果已随機數字,設定為false即可另數字恢複正常
實作彈出的鍵盤
在xml中定義:
<com.jay.easykeyboard.SystemKeyBoardEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
keyboard:xmlLayoutResId="@xml/keyboard_numbers"
/>
xml屬性:
屬性 | 作用 |
---|---|
keyViewbg | 用于設定鍵盤的按壓效果和按鈕之間線的粗細顔色等 |
xmlLayoutResId | 設定鍵盤的布局檔案,必須設定 |
isRandom | 是否數字随機 |
space | 開啟4位空格功能,使用場景是輸入身份證或銀行卡号的時候。 |
outSideCancel | 點選外部可關閉鍵盤 |
其他用法與
SystemKeyboard
一樣,
SystemKeyBoardEditText
實際是
SystemKeyboard
的進一步封裝,通過
EditText
與
PopupWindow
結合的方法來實作鍵盤的靈活彈出.
可以通過
getSystemKeyboard
方法來擷取到
SystemKeyBoard
對象。
如果需要實作焦點監聽,需要實作
setFocusChangeListence
接口,注意是項目方法不是原生Api方法噢。
啟用
removeCopyAndPaste
方法可以屏蔽EditText的長按複制粘貼功能
其他
如果在項目中需要進行原生與自定義鍵盤的切換或者輸入框的切換,可以使用
setEditText
方法,進行EditText的輸入目标切換
混淆:
-keep public class com.jay.easykeyboard.bean.**{ *;}
更新日志
2018/2/9
重構項目,将項目釋出到了JitPack倉庫
2018/12/17
項目v1.2重構,解決輸入框焦點選取問題,加入點選外部關閉自定義鍵盤功能,項目架構調整
2018/12/18
加入随機鍵盤功能
如果有别的未覆寫到的功能希望能在issuse中回報,個人能想到的場景有限,希望各位大佬集思廣益
項目位址:EasyKeyboardView
end
有任何問題可以在issuse中回報,如果對你有幫助,希望給我顆小星星