开发的时候需要适配很多种奇葩的LCD尺寸,这些设备分辨率往往很多适配起来很麻烦,加上手头往往没有对应设备。

比如说:我碰到一个分辨率是1440x900 并且屏幕的方向是竖屏,还有 1280x1024这种模拟器都不支持的分辨率。

这些设备往往不在身边,测试起来就比较麻烦。

        这里我总结一下如何方便的进行对这些屏幕的开发。


1.首先我们得确定屏幕的分辨率 和 像素密度

分辨率有很多已经现成的软件可以看,有些机器直接也在设置中可以看到,实在不行就自己写这个小程序看看吧。

DisplayMetrics displayMetrics = new DisplayMetrics();
 displayMetrics =  getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        final int height = displayMetrics.heightPixels;
        final int width = displayMetrics.widthPixels;int densityDpi = metric.densityDpi;

当然如果你是andorid 4.3 以上的系统,高通平台的设备一般都是会支持一个命令叫做 wm 

wm size  会告诉你当前的分辨率和物理分辨率 ,

像素密度: 这个值保存在/system/build.prop中, 如:ro.sf.lcd_dentisy=240

或者试试:       adb getprop ro.sf.lcd_dentisy


2. 分辨率和密度都明白了,所以为了开发方便我们相处了几种办法

2.1尝试使用自己设备修改成相同的分辨率测试(有风险,需要root权限)

修改分辨率 可以尝试命令 

或者 


    adb  am  display-size  1080x1920


                         修改屏幕密度   /system/build.prop 中的ro.sf.lcd_dentisy



卡主了也不要慌张只要adb可以连上修改回来就好 chmod 644 /system/build.prop






2.2    虚拟机 



x86的andorid虚拟机。 x86体系的andorid 引导用的是grub 需要修改一下grub的配置,即可修改分辨率。这里简单的说明一下:


最简单的方法是在启动时候按e 编辑grub配置 ,在引导中加入 vga =ask, 然后选择一下分辨率 似乎分辨率可选的不是特别多,


而且x86android虚拟机有些缺点,比如:上网需要自己再配置,需要童鞋对linux比较熟悉,so 不太推荐。




另外一个虚拟机是:Genymotion 这个软件。


缺点是需要注册。





android 手机代码中怎么修改分辨率 安卓修改显示分辨率_开发板


当然童鞋担心虚拟机和调试的工具连接的问题,这个网上有一堆教程,无非都是利用adb 网络的功能,大家可以查一下,比较简单。



虚拟机最大的缺点就是,如果我开发的机器机器分辨率是1366x768 的我非得用1920x1080的分辨率,那样看起来就很吃力,不停的上下拉。







这里大部分手机或者是开发板有带VGA或者HDMI的功能。




这里的办法是通过开发板、手机HDMI 和显示器连接输出,这里如果开发板有VGA接口,显示器没有HDMI的话,这个分辨率调整需要调驱动相当复杂。




我们可以 HDMI转VGA的芯片,x宝一大堆。




so: 我们利用  wm  am 或者其他平台可能还有相关的分辨率命令和固件集成HDMI设置工具来进行分辨率调整


这里我用的比较多的是am命令,比较好用 am  display-size  




另外如果屏幕横屏竖屏显示的问题无法接受,建议考虑从修改HDMI的驱动下手。








讲了一堆废话,还是说收我碰到的一种情况。  竖屏的情况,分辨率实际为900x1440


试了 Genymotion 虚拟机非常理想效果。


MX4PRO修改成这个分辨率可以,屏幕密度一改,无限FC了。


找了一块4412开发板和 1600x900分辨率的VGA显示器,HDMI 转VGA的方式,发现1440x900的分辨率显示的比较正常,


当屏幕一旋转900x1440这个分辨率显示区域非常小,非常模糊,不能指示。



经过搜索发现4412自身新版固件有HDMI方向的设置,就解决了。