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 ...
随机推荐
- css 进度条
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- C#/Asp.Net 获取各种Url的方法
比如有:http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2 Response.Wri ...
- 理解linux cpu load - 什么时候应该担心了
译文原文: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 你可能已经很熟悉linux的平均load. ...
- Android开发之使用DefaultHandler处理XML数据
一.定义规则 XML数据结构定义 请记住上面的定义,后面我会用“标签开始”.“文本”.“标签结束”表示SAX正在处理哪部分XML数据 事件模型 为什么这里我要谈到这个,因为SAX处理XML数据是采用事 ...
- java的BASE64Encoder,BASE64Decoder加密与解密
package com.app.common; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.Fi ...
- C# 多线程并发锁模式-总结
开篇: 互斥还是lock Monitor Mutex 模式! Muex Monitor lock AutoEventSet ManualEventSet 后续的 ReaderWriterLock ...
- C# 7 out variables, tuples & other new features
C# 7 out variables, tuples & other new features C# 7 is available on new Visual Studio 2017 and ...
- 利用Git进行团队协作
前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...
- 使用maven-assembly-plugin打包zipproject
使用Maven对Web项目进行打包.默觉得war包.但有些时候.总是希望打成zip包(亦或其它压缩包,类似tomcat的那种文件夹结构,直接运行bin/startup.sh就能够),maven-war ...
- Java中用HttpsURLConnection访问Https链接
在web应用交互过程中,有很多场景需要保证通信数据的安全:在前面也有好多篇文章介绍了在Web Service调用过程中用WS-Security来保证接口交互过程的安全性,值得注意的是,该种方式基于的传 ...