【Android系统】虚拟按键 平板设备中重叠的问题

问题背景:
        
        做的机器是平板,屏是横屏(分辨率是width > height, 1280*720 这种)。

        Android 9源码编译的vbmeta, vendor, system下进去,

        虚拟按键(back,home,app_swith)从左到右重叠,显示在屏幕右侧。


要求:
        平板设备,肯定是要显示在底部,不能显示在右侧。


不正常现象如下图:

 

现象分析,因为我主要是搞驱动的,framework里面很多也看不懂。

只能从现象上去分析解决问题,下面是心路历程:


    1.最开始发现Android界面app图标特别大,后面就发现是DPI (像素密度) 太大导致的。

            (adb shell wm density 可以设置dpi)

    2.进行了设置不同dpi尝试,分别
            a.    adb shell wm density 100
            b.    adb shell wm density 160
            c.    adb shell wm density 320

        发现a虚拟按键显示在屏幕下方
            b虚拟按键显示在右侧,重叠,显示较小
            c虚拟按键显示在右侧,重叠,显示较大

    3.结论:
            
            像素密度导致了虚拟按键的位置和大小不同。 (后面发现这个确实在framework中有软件代码)
后面就是找了下代码,百度搜了下虚拟按键代码位置。

代码路径:

    frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java


里函数 setInitialDisplaySize()



然后打了一些log:

      1. 首先确认了下,底层驱动穿上来的屏幕width和height

      2. 尝试修改了这段程序里的几个旋转角度 (试了修改mSeascapeRotation, 虚拟按键方向没变化)

(修改这个原因是由于adb shell wm density设置时,发现这个变化了,反过来想可能相关)

     

 

3.同时发现这个变化了:

        在虚拟按键显示在底部时,这个变量为false
        在虚拟按键显示在右侧时,这个变量为true


所以我这里直接将它设置为false,后面就显示正常了。 (但是我的机器,触摸屏触摸不到)

所以我又遇到一个问题:

        是TP固件的问题导致底部不能触摸,还是通过修改虚拟按键ui宽度解决这个问题


(自己想的肯定是TP固件没调好,但是开发中间阶段,肯定是虚拟按键能使用就行了)


(此时adb shell wm density 260, 虚拟按键变大了,可以使用了,


但是客户的app是160dpi开发的。。。😓😓,后面应该还是要调试tp固件)

 

先改下虚拟按键高度,保证能用吧,tp效果后面再调试


修改位置,文件目录:

 


 再打点log,主要是计算shortSizeDp和longSizeDp两句话里面的


修改好了!!

end~

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值