Android的支持多屏幕的原理是一套内置的兼容性特征,即用为当前设备屏幕提供一种合适的方式来共同管理并解析应用资源。虽然android平台负责大部分解析应用的工作,但是也为开发者提供了如何控制应用呈现的两个关键方法,它们的使用方法如下:

specific),指定密度(density-specific)的合适资源。指定大小(size-specific)的合适资源是指smallnormallarge, and xlarge。指定密度(density-specific)的合适资源,是指ldpi (low), mdpi (medium), hdpi (high), and xhdpi<supports-screens> android:smallScreensandroid:normalScreensandroid:largeScreens, and android:xlargeScreens.它可以用来指定应用程序支持哪些尺寸屏幕。<supports-screens>节点另外一个属性android:anyDensity可以用来指定应用程序是否支持内置支持多密度屏幕的机制。

 

      在应用程序运行的时候,android平台将提供三种方式支持应用程序,以确保应用程序以尽可能好的效果呈现在当前设备屏幕上,这三种具体方式如下:

      1、预前缩放(pro-scaling)资源(如图片)

"medium" (160)的屏幕上。

           例如:如果当前屏幕的密度为高密度(high),平台将加载drawable-hdpi文件夹下的资源,使用时并不缩放图片大小。如果drawable-hdpi中无资源可用,或无此文件夹,平台将加载默认资源即drawable文件里的资源,并且放大图片大小,从基本密度到最大密度。

      2、自动缩放像素维值与坐标

           如果应用程序不支持多屏幕,平台将自动缩放任何绝对像素坐标,像素维值,像素数学。平台如此做是为确保像素定义的屏幕元素更接近屏幕物理尺寸呈现,像它们在最基本密度160上表现的一样。平台对于应用程序的缩放很明显,并且会认为应用程序屏幕大小为缩放后的像素维值而不是物理像素维值

WVGA的高密度屏幕,480*800,相当于传统HVGA的屏幕大小,但是运行一个不支持多屏幕的应用程序。在这种情况下,系统在获取屏幕大小时,会误认为是320*533。然后,会使从坐标(10,10)到坐标(100,100)的长方形失效,系统将自动缩放坐标到合适大小,即从(15,15)到(150,150)。这种情况也会发生在其它地方,如果应用程序运行在低密度的屏幕上,坐标也会被缩小

      3、在大屏幕上的兼容模式