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

Android平台中支持一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合适资源。指定大小(size-specific)的合适资源是指small,normal,large, andxlarge。指定密度(density-specific)的合适资源,是指ldpi(low),mdpi(medium),hdpi(high), andxhdpi(extra high).

Android平台还提供<supports-screens>manifest文件节点元素,它的属性包括:android:smallScreens,

android:normalScreens,android:largeScreens, andandroid:xlargeScreens.它可以用来指定应用程序支持哪些尺寸屏幕。<supports-screens>节点另外一个属性android:anyDensity可以用来指定应用程序是否支持内置支持多密度屏幕的机制。

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

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

基于当前屏幕的密度,android平台会从应用程序自动加载指定大小,与密度的资源(均未缩放),如果没有适配的资源可用,平台将加载默认文件夹下的资源(即drawable文件夹中的资源)并根据需要缩小或放大资源以适配当前屏幕的一般屏幕密度。除非资源被加载到指定密度目录下,一般情况平台加载的默认资源是展现效果最好的,展现在基于最基本密度为"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、在大屏幕上的兼容模式

更多相关文章

  1. Android资源String中html标签的使用
  2. android屏幕旋转可能带来的问题
  3. Android(安卓)机器人:使用系统资源
  4. Android(安卓)图片库Glide - Glide3.x 官方wiki文档
  5. Android中怎么让你的layout适应屏幕的大小
  6. 组播屏幕共享、Android屏幕共享开发小结
  7. Android对不同DPI的dimen选择优先级问题
  8. android在进行创建项目gen下没有自动生成R.java
  9. Android工程目录介绍

随机推荐

  1. Android SDK 1.5中文版 (Application基础
  2. android之webview无网络情况下简单处理
  3. Android 命名规范 (提高代码可以读性)
  4. [置顶] 成功为Android系统配上了GNU开发
  5. Android 二维码开发功能实现(四)------基
  6. Android开发实践:在任意目录执行NDK编译
  7. Android的View体系(三):View坐标以及方法说
  8. Android之替换APP字体——Typeface
  9. Android传感器编程实例开发――三轴数据
  10. Android牟利之道(二)--广告平台的介绍