转自:http://venus-chen.iteye.com/blog/970498
Android的支持多屏幕的原理是一套内置的兼容性特征,即用为当前设备屏幕提供一种合适的方式来共同管理并解析应用资源。虽然android平台负责大部分解析应用的工作,但是也为开发者提供了如何控制应用呈现的两个关键方法,它们的使用方法如下:
Android平台中支持一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合适资源。指定大小(size-specific)的合适资源是指small
, normal
, large
, and xlarge。
指定密度(density-specific)的合适资源,是指ldpi
(low), mdpi
(medium), hdpi
(high), and xhdpi
(extra high).
Android平台还提供 <supports-screens>
manifest文件节点元素,它的属性包括: android:smallScreens
,
android:normalScreens
, android:largeScreens
, and android: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)。这种情况也会发生在其它地方,如果应用程序运行在低密度的屏幕上,坐标也会被缩小。
分享到:
相关推荐
一个用于实验自适应图标的Android应用程序
应用XML文件开发Android自适应分辨率程序.pdf
AdaptiveIconPlayground一个用于试验自适应图标的Android应用程序。 该应用程序查找所有带有自适应图标的已安装应用程序,并将它们显示在网格中。 然后,它允许您切换不同的蒙版形状(AdaptiveIconPlayground一个...
本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法: 让你的布局能充分的自适应屏幕; 根据屏幕的配置来加载合适的UI布局; 确保正确的布局应用在正确的设备屏幕上; 提供可以根据屏幕...
Android应用程序中屏幕大小的设置大家应该都比较清楚,不过如何才能让屏幕自己适应环境而改变大小呢?在这里我们就可以为大家详细介绍一下有关Android屏幕大小的自适应方式,帮助大家理解。不同的Androidtarget会有...
我发现有关使用自适应图标创建应用程序的google文档非常缺乏(而且不正确)。 希望该指南可以作为更好的文档。步骤1-在android studio中创建一个针对Android O预览的项目如果您已经有一个项目,则可以跳过此步骤第2...
AppIconLoader 来自AOSP Android应用程序图标加载器,具有可选的Glide和Coil集成。 这不是官方支持的Google产品。为什么选择AppIconLoader? 因为 (或 )不能与一起很好工作。 非自适应图标通常会带有一些阴影(这...
Flutter Folio一个演示应用程序,展示Flutter如何针对iOS,Android,MacOS,Windows,Linux和Web提供出色的多平台体验。 Flutter Folio一个演示应用程序,展示Flutter如何针对iOS,Android,MacOS,Windows,Linux和...
Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...
适用于Android的Easylauncher gradle插件使用简单的gradle规则修改每个应用程序变体的启动器图标。 添加任何颜色的色带,覆盖您自己的图像,更改图标的颜色,... Android的Easylauncher gradle插件使用简单的gradle...
针对现有的文件自适应日志模式存在的需要逐一修改应用程序的不足,提出了面向Android系统的目录自适应的日志模式选择机制,即针对不同的目录对可靠性需求的高低等级,选择相应的强弱程度不同的日志模式,同时分配...
ML Manager Pro是适用于Android的可自定义的APK管理器,具有root功能:提取所有已安装的应用程序,将其标记为收藏,轻松共享.apk文件,卸载系统应用程序等等。 ★功能★ •提取已安装和系统的应用程序并将其另存...
1.4 开始第一个Android应用 20 1.4.1 使用Eclipse开发第一个 Android应用 20 1.4.2 通过ADT运行Android应用 23 1.5 Android应用结构分析 24 1.5.1 创建一个Android应用 24 1.5.2 自动生成的R.java 26 ...
关于(简短说明/摘要):自适应评估系统是一个 Android 应用程序,学生可以通过应用程序进行测试。 它还有一个网络版本,可以在找到。 学生应在 30 分钟内完成 30 道多项选择题 (MCQ)。 向学生提出的问题本质上是...
由于需要制作一个控制小车移动的应用,使用按键控制不太舒服,故制作了一个虚拟摇杆。 之前的摇杆程序只是满足了基本功能,还有很多不方便以及不合理的地方,本次对其进行了重构,使其结构更佳合理,也完善了之前...
全书分为五大部分,共二十五章,主要内容包括:Android应用程序架构,移动存储解决方案,Android服务,资源、国际化与自适应,Android平台的新特性展示,整合Android与脚本语言,JIL Widget开发详解等。... 这是该...
带有Android O Material Design的МКExplorer应用程序的前叉。 应用程序的开发已在2年前停止,并且未发布源代码。 该存储库包含我对应用程序所做的修改以及为自己构建的二进制包。 屏幕截图 点击展开 产品特点 ...
这是android仿ios桌面的应用,支持拖动排序。 高仿iphone桌面,排列个数支持自适应设备哦。 由于是demo,若设备上程序安装过多,需要等长一点时间界面才能刷新出来。 这一版本支持文件夹操作。慢慢拖哦,手机性能高...
ExoPlayer ExoPlayer是适用于Android的应用程序级媒体播放器。 它提供了Android MediaPlayer API的替代方法,可以在本地和Internet上播放音频和视频。 ExoPlayer支持无法使用的功能ExoPlayer ExoPlayer是适用于...