2
A
回答
0
假设您只是将您的'自定义'键盘绘制到画布上。显然使用内置键盘更好。但是,如果你真的想自己做,这是一个解决方案。
绘制键盘的每个字符,将它的x,y位置存储在与您绘制每个键相对应的数组中。
//initialise
int[] letterX = new int[29];
int[] letterY = new int[29];
char[] keyboardChar = {'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M',' ', '<','#'};
某处你的“画”的方法:
// first keyboard row (do this for each row moving adding to y for next row
x=10; y=50; keySpacing = 30; // starting x, y position
for (int charIndex = 0; charIndex < 10; charIndex++) {
letterX[charIndex] = x;
letterY[charIndex] = y;
textWidth = mPaint.measureText(keyboardChar, charIndex, 1);
if (!letterHit) {
canvas.drawText(keyboardChar, charIndex, 1, x - (textWidth/2), y, mPaint);
} else {
// this key is being pressed so draw highlighted somehow
canvas.drawText(keyboardChar, charIndex, 1, x - (textWidth/2), y,mPaint);
}
x += keySpacing;
}
在的onTouchEvent,比较X,Y触摸位置决定你的letterX的阵列,这letterY会告诉你,如果按下一个键。数组索引告诉你它是哪个字符。你需要在draw方法中使用一些代码来打印出被按下的高亮键(例如,下面假设为16px容差)。
for (int j=0; j < 29; j++) {
if ((Math.abs(touchX - letterX[j]) < 16) && (Math.abs(touchY - letterY[j]) < 16) && !keyboardLock) {
letterHit = j;
}
}
你仍然需要更多的逻辑(删除等),你需要保持一个字符串。这就是为什么如果可能的话,最好使用系统键盘。
0
我认为你需要类似this post。
相关问题
- 1. iphone键盘触摸事件
- 2. 使用屏幕键盘触摸事件
- 3. Windows RT中的自定义触摸键盘
- 4. 触摸屏键盘
- 5. 触摸屏键盘
- 6. 触发键盘事件,WebKit的键盘不会触发事件
- 7. 在EditText上模拟触摸事件以显示软键盘
- 8. 自定义TouchDevice触发不正确位置的触摸事件
- 9. 如何在Windows RT上创建自定义虚拟触摸键盘
- 10. xCode自定义键盘上的Alt键
- 11. 自动加载自定义键盘而无需触摸Android中的EditText
- 12. 屏幕上(触摸屏)Web键盘
- 13. 在Chrome上触发键盘事件
- 14. 上的触摸事件iPhone
- 15. 退出触摸键盘
- 16. JQUERY触摸屏键盘
- 17. 如何在UITextField的触摸事件中不显示键盘?
- 18. 自定义键盘高度及以上的自定义键盘IOS
- 19. iOS - 触摸事件的自定义视图
- 20. 无法拦截自定义MediaController子类中的触摸事件
- 21. 触摸事件不会在Sencha中关闭键盘吗?
- 22. 触摸事件上UTableViewController
- 23. 在UIView上触摸事件
- 24. 在UITableView上触摸事件?
- 25. 定义并触发自定义事件
- 26. 自定义键盘不显示自定义键盘iOS 8
- 27. iPhone - 从自定义单元格中捕获UIButton触摸事件
- 28. iPhone - 从自定义单元格中捕捉UIButton触摸事件
- 29. 如何创建自定义触摸事件和动作
- 30. 我可以为iPhone创建自定义触摸事件
sudhakar wht的定制键盘的手段?您已经查看或扩展了一些类? – 2011-01-31 11:49:11