设备功能
<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(); }
平台版本
if (uild.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag/drop features that use <code><a href="/reference/android/content/ClipboardManager.html">ClipboardManager</a></code> APIs disableDragAndDrop(); }
屏幕配置
Android 为每种设备定义了两个特征:屏幕尺寸(屏幕的物理尺寸)和屏幕密度(屏幕上像素的物理密度,称为 DPI)。为了简化不同的配置,Android 将这些变体归纳成组,使它们更容易作为定位目标:
- 四种广义的尺寸:小、标准、大和特大。
- 还有几种广义的密度:mdpi(中)、hdpi(高)、xhdpi(超高)、xxhdpi(超超高)等。
屏幕兼容性:
灵活布局 您必须遵循一项核心原则,即避免对界面组件的位置和大小进行硬编码
备用布局 Android 允许您提供备用布局文件,而系统会在运行时根据当前设备的屏幕尺寸应用这些文件
可拉伸图像 .9.png
密度独立性性
备用位图
矢量图形
使用布局别名
如果同时支持低于和高于 Android 3.2 的版本,您必须同时对布局使用最小宽度限定符和“large”限定符。因此,您应创建一个名为 res/layout-large/main.xml
的文件,该文件可能与 res/layout-sw600dp/main.xml
完全相同。
为避免同一文件出现这种重复,您可以使用别名文件。例如,您可以定义以下布局:
res/layout/main.xml # single-pane layout res/layout/main_twopanes.xml # two-pane layout
并添加以下两个文件:
res/values-large/layout.xml
:<resources> <item name="main" type="layout">@layout/main_twopanes</item> </resources>
res/values-sw600dp/layout.xml
:<resources> <item name="main" type="layout">@layout/main_twopanes</item> </resources>
这两个文件的内容完全相同,但它们实际上并未定义布局,而只是将 main
设置为 main_twopanes
的别名。由于这些文件具有 large
和 sw600dp
选择器,因此它们适用于任何 Android 版本的平板电脑和电视(低于 3.2 版本的平板电脑和电视与 large
匹配,高于 3.2 版本者将与 sw600dp
匹配)。