Android基础知识之屏幕兼容模式
原文:http://android.eoe.cn/topic/android_sdk
注意:如果你在低于安卓3.0的版本上进行应用开发,但其在更大屏幕的设备(比如平板电脑)上显示正常时,你就需要禁用屏幕兼任模式来保持最佳用户体验。要学习如何快速禁用用户选项,请跳转至禁用屏幕兼任模式。
屏幕兼任模式是一种改善方法,用于不能正常适配大屏设备(如平板电脑)的情况。从安卓1.6开始,系统就能支持多种屏幕尺寸,并且调整应用布局的显示,来适应每一款屏幕。然而,如果在支持多种屏幕Supporting Multiple Screens的指引下,你的应用仍不能成功适配屏幕,其问题就很有可能就出在适配更大屏幕上。对于存在这种问题的应用,屏幕兼任模式可以让其在更大屏设备上得到改善。
目前有两个版本的屏幕兼任模式,它们稍有不同:
版本一(安卓1.6-3.1)
系统将应用UI显示为“邮票”式窗口。即,系统将应用的布局认定为适应普通尺寸手机(模拟320dp x 480dp的屏幕),窗口以外的屏幕部分显示为黑色背景。
该版本随安卓1.6的产生而出现,安卓1.6的设计就是仅适用于320dp x 480dp的原始尺寸。因为现在安卓1.5的设备很少使用了,几乎所有应用都在安卓1.6或更高的平台上开发,所以应该不会有版本一的屏幕兼任模式来适配更大屏幕。该版本差不多已经过时了。
http://developer.android.com/images/screens_support/compat-zoom-thumb.png
图1. 在安卓3.2平板电脑上,应用以屏幕兼任模式运行的情况。
http://developer.android.com/images/screens_support/compat-stretch-thumb.png
图2. 图1中的应用,在禁用屏幕兼任模式下的运行情况。
要禁用该版本的屏幕适配模式,你只需要设定android:minSdkVersion或android:targetSdkVersion至 “4”或更高,或设置android:resizeable至“true”。
版本二(安卓3.2或更高)
系统按照在普通屏幕手机上的显示方式(大致模拟320dp x 480dp的屏幕)显示应用,然后进行放大,填满屏幕。实际上就是“拉大”应用布局,这通常会引起UI的伪迹或像素丢失。
该版本随着安卓3.2的产生而出现,在应用还没有实施支持多种屏幕Supporting Multiple Screens中所提及的技术时,该版本起到了进一步支持应用在最新设备上的正常显示的作用。
这样屏幕兼任模式就能一直启用,用户不可禁用。(下面的章节将会讨论如何声明支持大屏幕)。
http://developer.android.com/images/screens_support/compat-toggle.png
图3. 开关屏幕适配模式的弹出菜单(当前为禁用状态,仅正常调整)。
作为开发者,你应该掌握在何时该使用屏幕兼任模式。以下章节将告诉你,在安卓3.2或更高版本下,如何选择禁用或启用屏幕兼任模式来适配更大屏幕。
禁用屏幕兼任模式
如果你的应用最初是为低于3.0的版本开发的,而它能在更大屏幕上正常显示,那么你就应当禁用屏幕兼任模式,从而保证最佳用户体验。否则,用户也许会启用屏幕兼任模式,这样就会影响最佳的应用体验效果。
在默认下,当一下可选特性之一为true时,3.2或更高版本设备的屏幕兼任模式将可用:
· 将应用中android:minSdkVersion和android:targetSdkVersion同时设为"10"或更低,并且使用元素,* 不要声明* 支持大屏。
· 将应用中 android:minSdkVersion或android:targetSdkVersion二者之一设定文"11"或更高,并且使用元素,* 声明其不支持* 大屏。
要想完全禁用屏幕兼任模式的用户选项并且移除系统栏上的图标,你可以:
- ·最简单:*
在清单文件中,添加元素,指定android:xlargeScreens属性为“true”;
就这么简单。这样就声明了你的应用支持所有大屏幕尺寸,系统也会根据屏幕调整布局。不论你在属性中设定了什么值,它都会起作用。
- ·简单,但有其他效果:*
在清单的元素中,设定android:targetSdkVersion为“11”或更高:
这种方法可声明应用支持安卓3.0,并且可以在更大屏幕(平板电脑等)上起作用。
谨慎:3.0或更高版本上,该方法也可启用UI的全息主题,启用时将在Activity上添加Action Bar,且移除系统栏上的选项菜单按钮。
如果在你改变此处以后,屏幕兼任模式仍然启用,请检查清单中的,确认其中没有设定为“false”的属性。最佳做法是使用元素,声明其支持不同屏幕尺寸,这样你就可以一直使用该元素了。
关于针对安卓3.0设备升级应用的更多信息,请见Optimizing Apps for Android 3.0.
启用屏幕兼任模式
当应用针对安卓3.2(API等级13)或更高时,你可以使用元素,针对某些屏幕启用或禁用屏幕兼任模式。
注意:屏幕兼任模式并不是一种最佳的选择——他会因缩放而导致UI的像素丢失和虚化。让应用在大屏手机上正常显示的最佳方法,请参见支持多种屏幕,并且为不同屏幕尺寸提供替换性选择。
在默认下,当设定android:minSdkVersion或android:targetSdkVersion二者之一为“11”或更高时,屏幕兼任模式将对用户不可用。若二者之一为true,且应用不能针对大屏进行适当调整时,你选择以下一种方式,来启用屏幕兼任模式:
·在清单文件中,添加 元素并且指定android:compatibleWidthLimitDp属性为“320”:
这表明,该应用“最小屏幕宽度”的最大值为320dp。通过该方法,任何大于此值的最小屏幕值都可将屏幕兼任模式设为用户的可选特性。
注意:现今,屏幕兼任模式进模拟屏幕为320dp宽,所以,如果android:compatibleWidthLimitDp的值大于320,屏幕兼任模式将不会在任何设备上启用。
·如果应用在针对大屏调整时出现功能性崩溃,所以你想强迫用户使用屏幕兼任模式(而不仅仅是提供这个选项),你可以使用android:largestWidthLimitDp属性。
这个属性和android:compatibleWidthLimitDp效果一样,除了强制启用屏幕兼任模式而不允许用户禁用。
Android基础知识之屏幕兼容模式的更多相关文章
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- Android基础知识之API等级介绍
原文:http://android.eoe.cn/topic/android_sdk :可以让开发者通过一个表示API级别的整数来描述程序在android平台上的兼容性,系统会将与系统本身提供的API ...
- Android基础知识(一)
前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...
- Android基础知识总结
四大组件之一活动 活动状态 运行状态:活动处于栈顶 暂停状态:活动不处于栈顶,但仍然可见 停止状态:完全不可见 销毁状态:离开返回栈 生存期 onCreate() onStart():不可见到可见调用 ...
- FTP基础知识 FTP port(主动模式) pasv(被动模式) 及如何映射FTP
您是否正准备搭建自己的FTP网站?您知道FTP协议的工作机制吗?您知道什么是PORT方式?什么是PASV方式吗?如果您不知道,或没有完全掌握,请您坐下来,花一点点时间,细心读完这篇文章.所谓磨刀不误砍 ...
- Android基础知识巩固:关于PendingIntent和广播
平时使用广播的场合比较多,但细节的东西,看过了也没有总结,以至于某些场合有小问题,还是要把原理和属性搞清楚才能运用自如. 其实也是自己比较懒,先看别人的blog,有个概念再去官网看英文的能好理解一些. ...
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- Android基础知识06—活动的四大启动模式
------ 活动的启动模式 ------ 在实际项目中应该根据特定的需求为每个活动指定恰当的启动模式. 四种启动模式: standard . singleTop . singleTask . sin ...
- android基础知识13:AndroidManifest.xml文件解析
注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
随机推荐
- go语言生成uuid
操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 golang没有提供生成uuid的接口,但开发中确实需要uuid. 这里把看到的代码记录下,也方便我以后查阅. 解决方案 ...
- Linux上实现Windows的SQLPlus保存SQL历史记录功能
在Windows操作系统上,当在DOS命令窗口中运行SQL*Plus的时候,可以使用向上,向下键来跳回之前已经执行过的SQL语句.你可以根据需要修改他们,然后按Enter键重新提交执行. 然而,当在L ...
- 粒子滤波跟踪移动机器人(MATLAB Robotics System Toolbox)
MathWorks从MATLAB 2015a开始推出与ROS集成的Robotics System Toolbox(机器人系统工具箱),它为自主移动机器人的研发提供现成的算法和硬件接口. 粒子滤波基本流 ...
- 奥比中光3D视觉传感器--OpenNI 2配置
PrimeSense是Kinect一代的芯片供应商,位于以色列,也是开源体感开发包OpenNI 的维护者.自从被 Apple 收购后,销声匿迹,OpenNI 也停止更新.现在可以从网站http://s ...
- 利用JQuery 来操作 ListBox和ListBox内移动
[导读]利用jquery 来操作 listbox和listbox内移动function listbox_move(listfrom,listto) { var size = $(" &quo ...
- Electromagnetic radiation and Radio 电磁波/电磁辐射和无线电波
电磁辐射,又称电磁波,是由同相振荡且互相垂直的电场与磁场在空间中以波的形式传递能量和动量,其传播方向垂直于电场与磁场构成的平面. 电磁辐射的载体为光子,不需要依靠介质传播,在真空中的传播速度为光速.电 ...
- View类的XML属性、相关方法及说明
XML属性 相关方法 说明 android:alpha setAlpha(float) 设置该组件的透明度 android:background setBackgroundResource(int) ...
- jquery版本号升级不兼容的问题:$("input").attr("value")功能发生改变
之前项目中使用的是jquery-1.6.3.js,在这个版本号中,假设我们想获取输入框的值,能够使用$("input").attr("value")或者是$(& ...
- Windows下node.js安装及环境配置
1. 安装 官网下载node.js的安装版,一路next,中间可以自定义安装路径 完成后安装目录内容如下 cmd下检查是否安装成功 新版Node.js已自带npm,所以安装Node.js时会一起安装, ...
- 使用Cygwin登录Raspberry PI
偿试了很多ssh终端程序,像ScureCRT,Putty,SSHSecureShellClient,SSH Client Tunnelier,每个工具都有自己的特点,putty对中文的支持还算好的,其 ...