Android 設(shè)備兼容性詳解

和你一起終身學(xué)習(xí),這里是程序員Android
經(jīng)典好文推薦,通過(guò)閱讀本文,您將收獲以下知識(shí)點(diǎn):
一、設(shè)備兼容性分類
二、硬件設(shè)備兼容
三、軟件 APP 兼容
四、兼容不同語(yǔ)言
五、兼容不同分辨率
六、兼容不同屏幕方向布局
七、兼容不同硬件 Feature
八、兼容不同SDK平臺(tái)
一、設(shè)備兼容性分類
Android設(shè)計(jì)用于運(yùn)行在許多不同類型的設(shè)備上,從手機(jī)到平板電腦和電視機(jī)。作為開(kāi)發(fā)人員,各種設(shè)備為您的應(yīng)用程序提供了巨大的潛在受眾。為了使您的應(yīng)用程序在所有這些設(shè)備上取得成功,APP應(yīng)該容忍一些功能變化,并提供適應(yīng)不同屏幕配置的靈活的用戶界面。
兼容性分類主要分:硬件兼容性,軟件兼容性兩大類。
二、硬件設(shè)備兼容
不同廠商(比如:手機(jī)廠商)生產(chǎn)不同尺寸的設(shè)備,此時(shí),設(shè)備要兼容不同類型的APP,Google也對(duì)此有強(qiáng)烈的要求,國(guó)外手機(jī),必須通過(guò)CTS?(兼容性測(cè)試)才可以上市售賣。國(guó)內(nèi)手機(jī)由于沒(méi)有預(yù)制GMS包,不用測(cè)試兼容性,故,有時(shí)候小廠商生產(chǎn)的手機(jī)在兼容性上可能不太完美。
三、軟件 APP 兼容
作為?APP開(kāi)發(fā)者,APP兼容性是必須的。兼容不同Feature,兼容不同語(yǔ)言、兼容不同屏幕尺寸、兼容不同分辨率,兼容不同SDK版本等
四、兼容不同語(yǔ)言
為了更加國(guó)際化,APP通常會(huì)兼容不同國(guó)家語(yǔ)言,最基本的是兼容英文,簡(jiǎn)體中文,繁體中文等
1. 文件名稱命名規(guī)則如下:
values-ISO語(yǔ)言代碼
2 .使用語(yǔ)法:
java :
R.string.引用字符串資源 XML :
@string/
常用語(yǔ)言如下:
簡(jiǎn)體中文 values-zh-rCN
繁體中文 values-zh-rTW 、values-zh-rHK
美式英文 values
英文 values-en-rGB
3. 兼容不同語(yǔ)言舉例
Android手機(jī)兼容不同國(guó)家的語(yǔ)言,進(jìn)而更方便用戶使用。

Android兼容不同國(guó)家語(yǔ)言
五、兼容不同分辨率
Android 運(yùn)行在不同的設(shè)備上,比如手機(jī)、TV、Car等設(shè)備載體。為了分類這些載體,Android設(shè)備分兩大類:
1. 屏幕大小
物理尺寸上的大小 區(qū)分如下:small, normal, large, and xlarge
2. 屏幕密度(DPI)
屏幕像素的物理密度,區(qū)分如下:mdpi (medium), hdpi (hdpi), xhdpi (extra high), xxhdpi (extra-extra high), and others
3. UI 標(biāo)準(zhǔn)化,常用圖片兼容性總結(jié)
開(kāi)發(fā)過(guò)程中適應(yīng)不同圖片時(shí)候的參考總結(jié)
| 密度 | 建議尺寸 | 手機(jī)屏幕密度DPI | 圖片分辨率 | 基準(zhǔn)圖縮放倍數(shù) |
|---|---|---|---|---|
| drawable-mdpi | 48 * 48 | 120dpi ~ 160dpi | 320x480 | 1.0 |
| drawable-hdpi | 72 * 72 | 160dpi ~ 240dpi | 480x800、480x854 | 1.5 |
| drawable-xhdpi | 96 * 96 | 240dpi ~ 320dpi | 960*720 | 2.0 |
| drawable-xxhdpi | 144 * 144 | 320dpi ~ 480dpi | 1280×720 | 3.0 |
| drawable-xxxhdpi | 192 * 192 | 480dpi ~ 640dpi | 1920*1080 | 4.0 |
4.手機(jī)屏幕密度DPI獲取方法
float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;
5. 兼容屏幕分辨率舉例

兼容不同屏幕分辨率

Android Studio推薦方法
六、 兼容不同屏幕方向布局(橫向 landscape 、縱向 portrait)
雖然Android?在橫豎屏切換的時(shí)候可以自適應(yīng),但是,效果經(jīng)常不是太好,為了更好適應(yīng)手機(jī)屏幕的旋轉(zhuǎn),橫屏、豎屏需要不同的布局,進(jìn)一步提升UI交互體驗(yàn)。
1. 兼容不同屏幕方向布局舉例:
| 布局 | 適應(yīng)屏幕 |
|---|---|
| layout | 默認(rèn)縱向 |
| layout-land | 橫向布局 |
| layout-large | 大屏縱向 |
| layout-large-land | 大屏橫向 |
| layout-sw600dp | 雙窗口布局,常用平板 |
| layout-sw600dp-land | 雙窗口布局,常用橫向 平板 |
| layout-sw720dp | 雙窗口布局,常用平板 |

兼容不同屏幕大小
七、兼容不同硬件 Feature
為了兼顧不同的手機(jī)版本,在應(yīng)用使用不同的Feature時(shí)候進(jìn)行判斷是否支持,這樣會(huì)更好的提升用戶體驗(yàn)。
比如有些低配手機(jī)會(huì)沒(méi)有陀螺儀等Feature,此時(shí)APK要兼容不容的硬件Feature。
兼容 Feature 的使用方法
例如:在AndroidManifest文件中聲明使用Feature
<manifest ... >
<uses-feature android:name="android.hardware.sensor.compass"
android:required="true" />
...
manifest>
然后在使用該Feature 功能時(shí)候進(jìn)行判斷取舍
PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
// This device does not have a compass, turn off the compass feature
disableCompassFeature();
}
八、 兼容不同SDK平臺(tái)
不同的設(shè)備會(huì)運(yùn)行在不同的Android版本上,比如Android 2.*、Android 4.* 、Android 5.* 、Android6.* 、Android 7.* 、Android 8.*?。
創(chuàng)建工程時(shí)候,在AndroidManifest.xml文件中可以選擇APP?要兼容的Android版本
<manifest ... >
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
...
manifest>
當(dāng)然也可以在Java代碼中動(dòng)態(tài)判斷當(dāng)前設(shè)備版本,進(jìn)而執(zhí)行不同的代碼。
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();
}至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺(jué)得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請(qǐng)聯(lián)系小編刪除。同時(shí)感謝您的閱讀,期待您的關(guān)注。
