虽然最新的键盘不再使用keyboardview开发,但是以前的代码还是要维护,现在接了一个任务 ,要完成pad的适配,于是开始琢磨计算了。
根据设计图,数字键盘和字母键盘高度一样,另外 字母键盘的间隙要好看,所以我主要是先编写字母键盘,然后完成数字键盘。
image.png
字母键盘规律,间隙5个 ,按键 4个,
image.png
数字键盘 ,按键为4,间隙百分之0.1忽略不计。
<dimen name="key_height_new">5.5%</dimen>
<dimen name="key_verticalGap">1%p</dimen>
<dimen name="number_key_height">6.75%p</dimen>
<dimen name="key_font_size">37sp</dimen>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="keyboard_title_width_title_margin">15dp</dimen>
<dimen name="keyboard_title_margin_left">25dp</dimen>
<dimen name="keyboard_title_margin_right">25dp</dimen>
<dimen name="shift_key_width">13%p</dimen>
<dimen name="normal_key_width">8%p</dimen>
<dimen name="fun_fix_width">1.8%p</dimen>
<dimen name="normal_key_hor_gap">1.81%p</dimen>
<!--九个按键补上的区域-->
<dimen name="key_last_second_nine_square_head_fix_width">5.6%p</dimen>
<dimen name="normal_line1_second_key_fix_gap">1%p</dimen>
<dimen name="normal_line1_first_key_fix_gap">0.8%p</dimen>
其中
<dimen name="key_height_new">5.5%</dimen>
<dimen name="key_verticalGap">1%p</dimen>
为字母键盘的高度和垂直间隙
公式 是 5.54+(15)= 27, 那么按键是27/4=6.75 实际上数字键盘也有间隙 ,27-(4*间隙百分比)/4才是最准确的。6.65%p
果然,如果不把数字的间隙算进去,就会发现切换到数字键盘,数字键盘高度还是变高了一点点,这个东西呢越小的dp手机看起来越明显。
为了方便,我用了计算器。
image.png
image.png
最后发现某些手机还是不太对,一定是哪里算错了,通过真机发现,其实数字键盘只有3个分割线,所以
公式=((按键行总数*按键高度)+(按键间隔总数*按键间隔值)-(数字键盘间隔总数*间隔百分比值) )/数字键盘行总数
从上面贴的图来看,应该是
result=((字母按键高度值*4)+(字母按键间隔值*5) -(数字间隔值*3))
result/4
下面这个就是比较完美的例子。
<dimen name="key_height_new">9.5%</dimen>
<dimen name="key_verticalGap">2%p</dimen>
<dimen name="number_key_height">11.925%p</dimen>
<dimen name="numkeyboard_verticalGap">0.1%</dimen>
![OOT)XY~S`G5{@U}DVU0LCA.png
最后我编写了一个程序 3个值不是固定的,其他都是固定的。。。
image.png
letterHeightSize=float(input("请输入字母键盘按键高度百分比:"))
letterGapSize=float(input("请输入键盘间隙的大小百分比:"))
numberGapSize=float(input("请输入数字键盘间隙的大小百分比:"))
微差
由于间隔线是单数,不太恰当的百分比会感觉非常明显的跳动,至少肉眼能看出来数字键盘和字母键盘不一致,通过调整 1为0.8 0.1为0.12 或者0.08这个肉眼就看不出来了。
image.png
最后还是解决不了问题,改数值的办法解决不了所有手机的问题。
aaa