Android是设计能够运行在手机、平板和电视这样不同的设备上。作为开发者,设备的范围为你的程序提供一个庞大的用户群体。为了你的程序能够成功的运行在所有的设备上,必须适应一个可变的特性和为了适配不同的屏幕配置而提供一个灵活的用户界面。
为方便你超这个方向努力,Android提供了动态的程序框架,你能在静态文件中提供指定的资源(例如,为不同的屏幕尺寸提供不能的布局文件)。Android会根据当前的设备配置加载合适的资源。为了长远打算,你的程序设计和一些附加的程序资源单独上交一个程序包(APK)提供了各种设备的优化的用户体验。
如果需要的话,从谷歌商店你能指定程序的功能特点和能够安装的设备类型。这页说明你怎样控制哪些程序可以控制你的程序,及怎么样编写程序确保能到达正确的用户。更多关于怎样制作适应不同设备的程序,请读Supporting Different Devices。
什么是兼容性?
为设备控制你程序的可用性
- 设备功能
- 平台版本
- 屏幕配置
设备功能特点
<manifest ... >
<uses-feature android:name="android.hardware.sensor.compass"
android:required="true" />
...
</manifest>
谷歌商店对比程序的功能和每一用户设备的可用功能来确定你的程序是否都兼容每一个设备。如果一个设备不提供你的程序要求所有的功能,用户将不能安装。
PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
// This device does not have a compass, turn off the compass feature
disableCompassFeature();
}
关于所有的过滤器的信息,通过谷歌商店,你能控制程序的可用性,看谷歌商店文档的过滤器。
平台版本
不同的设备可能安装着不同的Android版本,例如,Android4.0或Android4.4,。每个连续的平台版本常常添加新的API并且不适用与前一个版本。为了表明这组API可供选择,每个版本都要指定一个API等级。例如,Android1.0是Android等级1并且Android4.4是等级19.
这个API等级允许你声明最小的版本来兼容你的程序,用<users-sdk>这个标签的minSdkVersion属性表现。
举例,android4.0提供了日历功能,如果你的程序需要这个功能的api,你可以声明程序的最小支持版本是Android等级14。
<manifest ... >
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
...
</manifest>
这个minSdkVersion的属性声明你的程序兼容的最小版本并且targetSdkVersion属性声明程序兼容的最高版本。
Android的每个新版本的兼容性都是建立在前北奔的基础上,因此使用Android文档总是能够一直兼容未来的版本。
内容:这个targetSdkVersion属性不能阻止程序被安装在高于targetSdkVersion的指定值的设备上,但是targetSdkVersion是非常重要的因为它表明给系统的应用程序是否应该继承在新版本的行为更改。跑在最新的版本上系统会假设你的程序兼容老版本当你没有更新targetSdkVersion这个属性的时候。举例,其中在android4.4的行为改变中,警报生成是默认不准确的,因此系统可以分批处理警报并且保护电池的电量,但是如果你的目标API的等级低于19时系统将保留以前API行为。
然而,如果你的程序使用最新的平台版本添加APIs,但是不能要求它们用于主要的功能,你能在运行时检查API的等级并且在API太落后的情况下适度降低相应的功能。在这种情况下,设置minSdkVersion这个最低值可能是你的程序的主要特点,SDK_INT当前的版本和Build.VERSION_CODES你想要检查的版本对比。例如:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
// Running on something older than API level 11, so disable
// the drag/drop features that use ClipboardManager APIs
disableDragAndDrop();
}
屏幕配置
Android运行在各个尺寸的设备上,这些设备包括手机和电视。根据设备的屏幕类型分类,Android为每个设备定义了两个特征:屏幕尺寸(屏幕物理尺寸)和屏幕密度(屏幕的像素的物理密度,叫做DPI)。为简化不同的配置,Android归纳了几个目标组:- 四种尺寸:small(小)、normal(默认)、large(大)、xlarge(超大)。
- 几个密度:mdpi (中等), hdpi (高精度), xhdpi (超高精度), xxhdpi (比超高精度还高),和其他的。