Android 设备兼容性详解
極力推薦文章:歡迎收藏Android 干貨分享?
Android設(shè)計(jì)用于運(yùn)行在許多不同類型的設(shè)備上,從手機(jī)到平板電腦和電視機(jī)。 作為開(kāi)發(fā)人員,各種設(shè)備為您的應(yīng)用程序提供了巨大的潛在受眾。 為了使您的應(yīng)用程序在所有這些設(shè)備上取得成功,APP應(yīng)該容忍一些功能變化,并提供適應(yīng)不同屏幕配置的靈活的用戶界面。
本篇文章主要介紹?Android?開(kāi)發(fā)中的部分知識(shí)點(diǎn),通過(guò)閱讀本篇文章,您將收獲以下內(nèi)容:
設(shè)備兼容性分類
硬件設(shè)備兼容
軟件 APP 兼容
兼容不同語(yǔ)言
兼容不同分辨率
兼容不同屏幕方向
兼容不同硬件 Feature
兼容不同SDK平臺(tái)
1. 設(shè)備兼容性分類
兼容性分類主要分: 硬件兼容性,軟件兼容性兩大類。
2. 硬件設(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ī)在兼容性上可能不太完美。
3. 軟件 APP 兼容
作為?APP開(kāi)發(fā)者,APP兼容性是必須的。兼容不同F(xiàn)eature,兼容不同語(yǔ)言、兼容不同屏幕尺寸、兼容不同分辨率,兼容不同SDK版本等
4. 兼容不同語(yǔ)言
為了更加國(guó)際化,APP通常會(huì)兼容不同國(guó)家語(yǔ)言,最基本的是兼容英文,簡(jiǎn)體中文,繁體中文等
1. 文件名稱命名規(guī)則如下:
values-ISO語(yǔ)言代碼
2 .使用語(yǔ)法:
java :
XML :
常用語(yǔ)言如下:
3. 兼容不同語(yǔ)言舉例
Android手機(jī)兼容不同國(guó)家的語(yǔ)言,進(jìn)而更方便用戶使用。
Android兼容不同國(guó)家語(yǔ)言
5.兼容不同分辨率
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é)
| 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 |
手機(jī)屏幕密度DPI獲取方法
float xdpi = getResources().getDisplayMetrics().xdpi; float ydpi = getResources().getDisplayMetrics().ydpi;4. 兼容屏幕分辨率舉例
兼容不同屏幕分辨率
Android Studio推薦方法
6. 兼容不同屏幕方向布局(橫向 landscape 、縱向 portrait)
雖然Android?在橫豎屏切換的時(shí)候可以自適應(yīng),但是,效果經(jīng)常不是太好,為了更好適應(yīng)手機(jī)屏幕的旋轉(zhuǎn),橫屏、豎屏需要不同的布局,進(jìn)一步提升UI交互體驗(yàn)。
兼容不同屏幕方向布局舉例:
| layout | 默認(rèn)縱向 |
| layout-land | 橫向布局 |
| layout-large | 大屏縱向 |
| layout-large-land | 大屏橫向 |
| layout-sw600dp | 雙窗口布局,常用平板 |
| layout-sw600dp-land | 雙窗口布局,常用橫向 平板 |
| layout-sw720dp | 雙窗口布局,常用平板 |
兼容不同屏幕大小
7. 兼容不同硬件 Feature
為了兼顧不同的手機(jī)版本,在應(yīng)用使用不同的Feature時(shí)候進(jìn)行判斷是否支持,這樣會(huì)更好的提升用戶體驗(yàn)。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 featuredisableCompassFeature(); }8. 兼容不同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 APIsdisableDragAndDrop(); }長(zhǎng)按識(shí)別二維碼,領(lǐng)福利
至此,本篇已結(jié)束,如有不對(duì)的地方,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝!
如有侵權(quán),請(qǐng)聯(lián)系小編,小編對(duì)此深感抱歉,屆時(shí)小編會(huì)刪除文章,立即停止侵權(quán)行為,請(qǐng)您多多包涵
為您每個(gè)?“在看” ?而怦然心動(dòng)!
總結(jié)
以上是生活随笔為你收集整理的Android 设备兼容性详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 全国113个城市空气质量的K均值聚类分析
- 下一篇: Android上海找工作经历分享,半月收