但是没有实现随机键盘 本次以该demo中的数字键盘为例
如何在每次打开键盘的时候都变换对应按键的位置
在设置自定义键盘keyboardView.setKeyboard(keyboard) 之前 随机排列每一个按键
// 这里以数字键盘为例 获取到键盘原有的按键 随机排列 然后在重新赋值
for(Keyboard.Key item : keyboardNumberOnly.getKeys()){
int[] i = item.codes;
}
// 随机排序数字
Collections.shuffle(keyCodes);
// 遍历所有的按键
List keys = keyboardNumberOnly.getKeys();
int index = 0;
for (Keyboard.Key key : keys) {
int code = key.codes[0];
// 如果按键是数字 去除左下角和右下角的非数字键
if ( code != -5 && code != -2) {
char keyCode = keyCodes.get(index++);
key.codes[0] = keyCode;
key.label = Character.toString(keyCode);
}
}
这里有一个判断 if(code != -5 && code != -2) 这和定义的键盘xml有关
贴出代码 keyboard_num_only.xml
android:horizontalGap="2.5%p"
android:keyWidth="30%p"
android:keyHeight="@dimen/key_num_height"
android:verticalGap="@dimen/key_vertical_gap">
android:codes="49"
android:keyLabel="1" />
android:codes="50"
android:keyLabel="2" />
android:codes="51"
android:keyLabel="3" />
android:codes="52"
android:keyLabel="4" />
android:codes="53"
android:keyLabel="5" />
android:codes="54"
android:keyLabel="6" />
android:codes="55"
android:keyLabel="7" />
android:codes="56"
android:keyLabel="8" />
android:codes="57"
android:keyLabel="9" />
android:codes="-2"
android:keyLabel="abc" />
android:codes="48"
android:keyLabel="0" />
android:codes="-5"
android:isRepeatable="true" />
-5和-2 是底部角落里的两个固定按键 效果如图
随机键盘.png