(一)不同的layout
安卓手机的画面尺寸有480 x320、640 x360、800 x480、854 x480等各种各样。 怎样才能使APP自动适应不同的画面呢? 其实很简单。 只要在res目录下创建不同的layout文件夹,例如layout-640x360、layout-800x480,所有的layout文件都会在编译后写入R.java中,但系统会显示在屏幕上但是,根据分辨率添加layout文件时,原始文件夹和资源layout必须存在。 如果不存在就会发生错误。 此外,命名layout文件夹时必须遵守这些规则。 如果将layout-640x360的数量放在小数之前,则会发生错误。 下图:
即使这样设置,为什么手机会发现没有根据分辨率选择layout呢? 经过多次测试,我发现问题出在这里。 请看截图:
本来画面大小的选择就很奇怪,把layout文件夹下的所有XML布局文件设定为非custom选项就可以了。 这个可以设定所需的默认大小。
这里选择2.7英寸作为默认。
这将启动程序,您可以基于像素选择layout文件
关于安卓的nodpi、xhdpi、hdpi、mdpi和ldpi作者:
lizongbo发表于22:43 .周三,1月12th,2011日
版权声明:可以自由转载,转载时请务必以超链接形式注明文章
原始来源和作者信息及本版权声明。
http://618119.com/archives/2011/01/12/205.html
关于安卓的nodpi、xhdpi、hdpi、mdpi和ldpi
首先是几个基本概念:
1 .屏幕大小Screen size
即显示画面的实际大小,沿画面对角线进行测量。
为了简单起见,安卓将所有的屏幕尺寸分为小、普通、大、超大4种尺寸。 分别对应small、normal、large、and extra large。
在APP应用程序中,您可以为这四种大小提供不同的自定义屏幕布局。 平台将根据屏幕的实际大小选择相应的布局进行渲染。 这个选择在程序方面是透明的。
2 .屏幕宽高比Aspect ratio
纵横比是屏幕的物理宽度和物理高度的比例关系。 APP应用程序可以使用有限的资源提供给定宽高比的屏幕布局资源。
3 .屏幕分辨率Resolution
屏幕上显示的物理像素总数。 需要注意的是,分辨率通常以宽度x高度表示,但分辨率并不意味着特定的屏幕纵横比。
在Andorid系统中,APP应用程序不直接使用分辨率。
4 .密度密度
根据像素分辨率,指定可以在屏幕上物理显示的宽高度范围内的像素数。
在相同高度的区域中,低密度显示器可以显示较少的像素,而高密度显示器可以显示更多的像素。
画面密度非常重要。 因为在其他条件不变的情况下,固定宽度和高度的UI组件(例如按钮)在低密度显示器上看起来较大,在高密度显示器上看起来较小。
为了简单起见,安卓将所有的屏幕分辨率分为4种尺寸。 小、普通、大、超大(分别对应small、normal、large、and extra large。
APP应用程序可以为这四种大小分别提供不同的资源。 平台透明地缩放资源以适应指定的屏幕分辨率。
5 .设备独立像素独立像素(DP )。
APP应用程序可用于定义UI组件的虚拟像素单元,并描述布局大小和位置,而与密度无关。
设备的独立像素相当于160 dpi屏幕上的物理像素。
在程序执行过程中,系统根据屏幕实际密度透明处理任何需要缩放的独立设备像素单元。 将设备独立像素转换为屏幕的实际像素的换算很简单。 pixels=dps*(density/160 )。
例如,在240 dpi的屏幕上,一个设备独立像素等于1.5物理像素。 为了确保UI组件在不同的屏幕上正确显示,强烈建议您使用“设备独立像素单元”定义APP应用程序UI。
4种屏幕大小分类: small、normal、large、and xlarge
四种密度分类:ldpi(low )、mdpi (medium )、hdpi (high )、andxhdpi (axtrahigh ) )。
需要注意的是, xhdpi是从Android2.2(APIlevel8)增加的分类。
xlarge是从Android2.3(APIlevel9)开始增加的分类。
DPI是“dot per inch”的缩写,是每英寸的像素数。
典型屏幕: ldpi为120,mdpi为160,hdpi为240,xhdpi为320。
获取画面分辨率信息的两种方法:
displaymetricsmetrics=newdisplaymetrics (;
display display=activity.getwindow manager ().getDefaultDisplay;
display.getmetrics(metrics;
//这里获得的像素值是设备独立像素dp
//displaymetricsmetrics=activity.get resources ().getDisplayMetrics; 这样得到的参数信息不正确,所以请不要使用这个方式。
不能使用Android.content.RES.resources.get system ().getDisplayMetrics )。 这样可以得到的宽度和高度是空的。
如果需要为Android pad定制资源文件,则res目录下的目录将为:
可擦除
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-nodpi
drawable-nodpi-1024600
drawable-nodpi-1280800
drawable-nodpi-800480
佛斯
values-ldpi
values-mdpi
values-hdpi
values-xhdpi
values-nodpi
values-nodpi-1024600
values-nodpi-1280800
values-nodpi-800480
参考: