当前位置: 代码迷 >> Android >> 关于Layout-x*的疑惑
  详细解决方案

关于Layout-x*的疑惑

热度:11   发布时间:2016-05-01 13:22:05.0
关于Layout-***x***的困惑
大家都知道在开发软件的时候使用layout-800x480,layout-640x320等layout目录来根据不同的分辩率定义不同的界面布局,但问题是layout-后面的"分辩率"值如何确定呢?不要说是屏幕的物理分辩率,因为我这里的事实可以证明使用物理分辩率根本就不行.
系统:安卓4.0
样机1:物理分辩率是800*480 但能对它起作用的layout-是layout-539x320
样机2:物理分辩率是1024*768 但是layout-1024x768对它不起作用,默认layout目录下的布局文件对它起作用.

所以请高人指点一下:如何取得正确的layout-***x***.(最好能给一段小程序来测试出机子的***x***)谢谢.

------解决方案--------------------
layout-high这样的文件夹的,哪有设置分辨率那么细的.
------解决方案--------------------
用layout-ldpi, layout-hdpi, layout-xhdpi
------解决方案--------------------
layout-800x480, layout-539x320, 这样分辨率太多了, 就用layout-ldpi, layout-hdpi, layout-xhdpi这三个
探讨

引用:
用layout-ldpi, layout-hdpi, layout-xhdpi


这三个文件夹不能解决全部问题的,同样是7寸800×480的平板电脑一个2.3的系统,一个是4.0的系统,它们使用的layout文件就一个(2.3系统)是:layout-800x480,而另一个(4.0系统)却要使用layout-539x320

------解决方案--------------------
打印出来看看
System.out.println(getWindowManager().getDefaultDisplay().getWidth());
System.out.println(getWindowManager().getDefaultDisplay().getHeight());
------解决方案--------------------
android4.0 貌似要减去状态栏高度48。 getHeight()方法获取的是getRawHeight() - 状态栏高度。
------解决方案--------------------
我映像中记得好像是有换算比率的。而不是简单的分辨率。待我找找看。
------解决方案--------------------
其实系统用哪个lay_out的资源与build.prop里ro.sf.lcd_density的值也有关系. 此为屏幕像素密度.
------解决方案--------------------
Android这种设计纯属蛋疼!
hdpi, mdpi, ldpi都已经够开发人员受的了。一般情况下hdpi, mdpi, ldpi已经足够用了
------解决方案--------------------
一大堆瞎喷的人,有本事把人家的问题给解决掉