Android4.4椿肩、5.0、6.0豺谈、7.0郑象、8.0、9.0茬末、10.0厂榛、11.0版本遷移

一、系統(tǒng)適配相關(guān)的幾個(gè)重要概念

手機(jī)的系統(tǒng)版本:

指的是手機(jī)的Android系統(tǒng)版本丽惭,例如Android8.0

應(yīng)用的的設(shè)置版本:

1击奶、minSdkVersion

是指支持到手機(jī)系統(tǒng)的最低版本,如果手機(jī)系統(tǒng)的api比這個(gè)低责掏,則手機(jī)無(wú)法安裝此應(yīng)用

2柜砾、targetSdkVersion

是指該應(yīng)用運(yùn)行時(shí)的目標(biāo)系統(tǒng)環(huán)境版本,targetSdkVersion需要大于或者等于minSdkVersion换衬,實(shí)際運(yùn)行時(shí)的分兩種情況

其一:手機(jī)系統(tǒng)大于或者等于targetSdkVersion時(shí)痰驱,運(yùn)行環(huán)境及遵循的api限制為targetSdkVersion的版本

其二:手機(jī)系統(tǒng)小于targetSdkVersion時(shí),運(yùn)行環(huán)境及遵循的api限制為手機(jī)系統(tǒng)的版本

舉兩個(gè)targetSdkVersion的例子

1.Android系統(tǒng)為8.0瞳浦,應(yīng)用的targetSdkVersion為23(即Android系統(tǒng)6.0担映,不明白請(qǐng)參考下文的對(duì)照表),那么該應(yīng)用不需要理會(huì)8.0要求的多渠道通知及一定要使用前臺(tái)服務(wù)的限制叫潦,只需滿足6.0的系統(tǒng)限制蝇完,即運(yùn)行時(shí)的效果跟在6.0系統(tǒng)中的表現(xiàn)是一致的

2.Android系統(tǒng)為5.0,應(yīng)用的targetSdkVersion為23(即Android系統(tǒng)6.0)矗蕊,那么該應(yīng)用運(yùn)行時(shí)的效果只會(huì)表現(xiàn)出5.0系統(tǒng)的特性(例如限制和一些api的使用等)短蜕,并不會(huì)表現(xiàn)出任何Android系統(tǒng)6.0的特性

*注意:compileSdkVersion是AS編譯APK使用的API Level,CompileSDKVersion不會(huì)改變apk運(yùn)行時(shí)的行為拔妥,也不會(huì)被包含到apk中忿危,只是編譯的時(shí)候起提示的作用,一般來(lái)說(shuō)compileSdkVersion需要大于等于targetSdkVersion


二没龙、系統(tǒng)名稱(chēng)铺厨,版本號(hào)缎玫,api等級(jí)對(duì)照表

Android 4.4(KitKat)? ????????? Build.VERSION_CODES.K? ? ? ????????????????????api19

android 5.0 (Lollipop)?????????????Build.VERSION_CODES.LOLLIPOP???????????api21

android 5.1(Lollipop)? ? ? ? ? ? ? ?Build.VERSION_CODES.LOLLIPOP_MR1??????????api22

android 6.0 (Marshmallow)? ? ? Build.VERSION_CODES.M????????????api23

android 7.0? ?(Nougat)? ? ? ? ? ? ? Build.VERSION_CODES.N? ????????????api24

android 7.1? ?(Nougat)??????????????Build.VERSION_CODES.N_MR1 ? api25

android 8.0(Oreo)????????????????Build.VERSION_CODES.O ? ????????????api26

android 8.1(Oreo)? ? ? ? ? ? ? ? Build.VERSION_CODES.O_MR1? ?????api27????

android 9.0? (Pie)? ? ? ? ? ? ? ? ? ? ??Build.VERSION_CODES.P? ? ????????????????api28

android 10.0

android 11.0

*這里只是列出最常見(jiàn)的,還有一些在很低存在感的版本請(qǐng)查看官網(wǎng)

https://developer.android.google.cn/about/versions/11


三解滓、如何處理不同系統(tǒng)平臺(tái)的代碼

1赃磨、@RequiresApi?

官方的解釋是Denotes that the annotated element should only be called on the given API level or higher

使用場(chǎng)景:當(dāng)你使用一個(gè)較高版本才有的api(比工程中的minSdkVersion高)時(shí),編譯器會(huì)報(bào)錯(cuò)洼裤,@RequiresApi可以讓代碼編譯通過(guò)

例如

@RequiresApi(api = Build.VERSION_CODES.M)

public void doSomething(){

? ? //一些只能在個(gè)別版本sdk才擁有的方法

}

即:使用此注解的代碼邻辉,只會(huì)在當(dāng)前版本等于或者大于當(dāng)前的Build.VERSION_CODES.M(即api23)時(shí),才運(yùn)行doSomething()方法

2腮鞍、@TargetApi

同@RequiresApi 值骇,但是屬于過(guò)時(shí)的方法,建議使用@RequiresApi 來(lái)替代

3移国、可以通過(guò)判斷sdk的版本(Build.VERSION.SDK_INT)吱瘩,來(lái)為能夠使用的版本進(jìn)行個(gè)性化設(shè)置

例如:沉浸式狀態(tài)欄配適

在Android系統(tǒng)4.4以前,狀態(tài)欄的背景色和字體顏色都是不能改變的迹缀。但是4.4以后Google增加了改變狀態(tài)欄背景透明的方法使碾。可以通過(guò)判斷sdk的版本祝懂,來(lái)為能夠使用的版本進(jìn)行個(gè)性化設(shè)置:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);}

沉浸式狀態(tài)欄是Android在5.0中引入的票摇,在5.0之前是沒(méi)有的,并且在Android6.0中沉浸式狀態(tài)欄的使用方法和5.0不一樣砚蓬,因此需要做到版本兼容矢门,針對(duì)于不同的Android進(jìn)行適配,同樣也是通過(guò)判斷Build.VERSION.SDK_INT來(lái)區(qū)分版本怜械,進(jìn)行個(gè)性化配適

Android4.4

android4.4又稱(chēng)Android K(Kitkat)

1.webview的變化

4.4版本以后對(duì)http與https進(jìn)行了安全認(rèn)證的區(qū)分颅和,4.4以后默認(rèn)不支持https這種方式,但是提供了三種向下兼容的模式:

MIXED_CONTENT_NEVER_ALLOW:Webview不允許一個(gè)安全的站點(diǎn)(https)去加載非安全的站點(diǎn)內(nèi)容(http),比如缕允,https網(wǎng)頁(yè)內(nèi)容的圖片是http鏈接峡扩。強(qiáng)烈建議App使用這種模式,因?yàn)檫@樣更安全

MIXED_CONTENT_ALWAYS_ALLOW:在這種模式下障本,WebView是可以在一個(gè)安全的站點(diǎn)(Https)里加載非安全的站點(diǎn)內(nèi)容(Http),這是WebView最不安全的操作模式教届,盡可能地不要使用這種模式

MIXED_CONTENT_COMPATIBILITY_MODE:在這種模式下,當(dāng)涉及到混合式內(nèi)容時(shí)驾霜,WebView會(huì)嘗試去兼容最新Web瀏覽器的風(fēng)格案训。一些不安全的內(nèi)容(Http)能被加載到一個(gè)安全的站點(diǎn)上(Https),而其他類(lèi)型的內(nèi)容將會(huì)被阻塞粪糙。這些內(nèi)容的類(lèi)型是被允許加載還是被阻塞可能會(huì)隨著版本的不同而改變强霎,并沒(méi)有明確的定義。這種模式主要用于在App里面不能控制內(nèi)容的渲染蓉冈,但是又希望在一個(gè)安全的環(huán)境下運(yùn)行城舞。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){

? ? settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

}?

4.4以后webview默認(rèn)不保存cookie狀態(tài)

如果要設(shè)置在4.4以后進(jìn)行cookie保存轩触,可以這樣設(shè)置

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){

? ? //android5.0以后webview默認(rèn)不在保存cookie所以會(huì)導(dǎo)致第三方登錄狀態(tài)無(wú)法保存

? ? CookieManager cookieManager = CookieManager.getInstance();

? ? cookieManager.setAcceptThirdPartyCookies(webView,true);

}


Android5.0

android5.0又稱(chēng)Android L(Lollipop)

1.安裝時(shí)控制權(quán)限

用戶(hù)可以在安裝時(shí)關(guān)閉某些靜態(tài)注冊(cè)的權(quán)限。

2.用戶(hù)體驗(yàn)優(yōu)化

引入Material Design設(shè)計(jì)家夺,開(kāi)始采用扁平化設(shè)計(jì)脱柱,會(huì)擁有類(lèi)似物理表面和邊緣的視覺(jué)效果,動(dòng)態(tài)陰影和動(dòng)畫(huà)方面的加強(qiáng)拉馋。

3.增加供開(kāi)發(fā)者使用的官方控件

引入抽屜布局(DrawerLayout)榨为、RecyclerView、CardView煌茴、SwipeRefreshLayout随闺、ToolBar、drawerToggle等景馁,開(kāi)始能夠自定義狀態(tài)欄板壮、標(biāo)題欄逗鸣、導(dǎo)航欄的顏色合住,設(shè)置控件陰影。

4.增加觸摸反饋

當(dāng)用戶(hù)與用戶(hù)界面進(jìn)行交互時(shí)撒璧,觸摸反饋在觸摸點(diǎn)上提供了一種瞬時(shí)視覺(jué)確認(rèn)透葛,按鈕的默認(rèn)觸摸反饋動(dòng)畫(huà)使用新的RippleDrawable類(lèi)。

5.增加activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)

Android6.0

Android6.0又稱(chēng)Android M(Marshmallow)

1.完整的權(quán)限控制

危險(xiǎn)的權(quán)限都需要向系統(tǒng)動(dòng)態(tài)申請(qǐng)卿樱,只靜態(tài)注冊(cè)申請(qǐng)權(quán)限會(huì)無(wú)效化僚害。對(duì)于一些隱私權(quán)限會(huì)在第一時(shí)間提示用戶(hù)是否授權(quán)。

新增API

ContextCompact.checkSelfPermission() 檢測(cè)是否擁有權(quán)限

ActivityCompact.requestPermission() 申請(qǐng)授權(quán)

onRequestPermissionsResult() 用戶(hù)是否授權(quán)

ActivityCompat.shouldShowRequestPermissionRationale() 權(quán)限解釋?zhuān)ㄓ脩?hù)拒絕后出現(xiàn))

Android7.0

android7.0又稱(chēng)android N(Nougat)

1.后臺(tái)優(yōu)化

刪除了三項(xiàng)隱式廣播(CONNECTIVITY_ACTION繁调、ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO)萨蚕,優(yōu)化內(nèi)存使用和電量消耗。

Android8.0

Android8.0又稱(chēng)Android O(oreo)

1.PinnedShortcuts功能

類(lèi)似蘋(píng)果的3DTouch蹄胰,長(zhǎng)按一個(gè)軟件后可以彈出子菜單岳遥,然后就可以通過(guò)這個(gè)方式快捷的使用該應(yīng)用的部分功能。

2.自適應(yīng)圖標(biāo)支持多種形狀

能在不同的設(shè)備型號(hào)上顯示不同的圖標(biāo)形狀裕寨。比如同一個(gè)桌面圖標(biāo)在一家 OEM 廠商的設(shè)備上顯示為圓形浩蓉,在另一家則可以顯示為方形。通過(guò)定義兩張圖層(前景與背景)你可以制定你的桌面圖標(biāo)外觀宾袜,你必須提供沒(méi)有形狀捻艳、陰影的 PNG 格式圖象作為圖層 Drawable。

3.通知渠道 — Notification Channels

通知渠道是由應(yīng)用自行定義的通知內(nèi)容類(lèi)別庆猫,借助渠道认轨,開(kāi)發(fā)者可以讓用戶(hù)對(duì)不同種類(lèi)的通知進(jìn)行精細(xì)控制。

4.后臺(tái)限制

對(duì)隱式廣播月培、后臺(tái)服務(wù)和位置更新等進(jìn)行了后臺(tái)自動(dòng)限制

Android9.0

Android9.0又稱(chēng)Android P(pie)

1.對(duì)全面屏的支持

模仿了ios提高屏占比的方案(前攝像頭沒(méi)有比較好的隱藏方案)嘁字,即支持齊劉海昨稼。借助最新的提供的DisplayCutout類(lèi),開(kāi)發(fā)者可以找到非功能區(qū)域的位置和形狀拳锚,而非功能區(qū)域是不應(yīng)顯示功能的假栓;使用getDisplayCutout()就可以獲取這個(gè)區(qū)域的詳細(xì)信息。

2.通知欄(狀態(tài)欄)

現(xiàn)在只允許顯示最多4個(gè)通知圖標(biāo)霍掺,不管當(dāng)前設(shè)備是否是齊劉海匾荆,多出來(lái)的通知顯示為三個(gè)點(diǎn)。Android P版本中杆烁,你還可以在消息中展示圖像牙丽;新的Notification.Person類(lèi)可以識(shí)別對(duì)話中的任務(wù),包括他們的頭像和URI兔魂。

3.多攝像頭畫(huà)面

可以即時(shí)獲取到兩個(gè)或者更多的相機(jī)數(shù)據(jù)流烤芦。

4.神經(jīng)網(wǎng)絡(luò)

任務(wù)可以聲明它們估算的數(shù)據(jù)大小,信號(hào)預(yù)讀取并且指定詳細(xì)的網(wǎng)絡(luò)需求析校。即根據(jù)任務(wù)需求的數(shù)據(jù)大小和當(dāng)前的網(wǎng)絡(luò)環(huán)境构罗,在收費(fèi)網(wǎng)絡(luò)里延遲一些網(wǎng)絡(luò)要求,而在不計(jì)費(fèi)的網(wǎng)絡(luò)里可以通過(guò)消息預(yù)獲取來(lái)得到更好的用戶(hù)體驗(yàn)智玻。

5.Material Design迎來(lái)2.0時(shí)代

加入了大量的圓角設(shè)計(jì)遂唧,UI方面的優(yōu)化。

6.Android Dashboard

用戶(hù)可以看清楚自己在受手機(jī)上都干了哪些事情吊奢,從而提醒自己是否過(guò)多的浪費(fèi)了不必要的時(shí)間盖彭,并在必要的時(shí)候提醒你應(yīng)當(dāng)休息一下。對(duì)某一款應(yīng)用進(jìn)行時(shí)間限制页滚,用戶(hù)使用到一定時(shí)間之后就會(huì)提醒召边,甚至讓圖標(biāo)變灰色,以提醒用戶(hù)盡量少用這個(gè)APP裹驰。

7.Wind Down模式

全局的夜間模式(個(gè)人感覺(jué)這個(gè)好人性化)

8.Adaptive Battery模式

一個(gè)電池優(yōu)化模式隧熙,提高續(xù)航。在該模式下邦马,程序不需要喚醒可以極大的降低資源占用贱鼻,更關(guān)注用戶(hù)最常用的服務(wù)和應(yīng)用程序。

9.Shush模式

在這個(gè)模式下滋将,如果用戶(hù)將手機(jī)屏幕朝下放置邻悬,那么手機(jī)會(huì)自動(dòng)調(diào)整為震動(dòng)或者靜音模式,只保留鬧鐘的聲音随闽。

10.檢測(cè)用戶(hù)的行為父丰,讓系統(tǒng)作出對(duì)應(yīng)的動(dòng)作

如插入耳機(jī)孔自動(dòng)播放音樂(lè),搜索“打車(chē)”自動(dòng)顯示打車(chē)軟件等。

總結(jié):主打?qū)Υ笃聊缓鸵曈X(jué)體驗(yàn)的優(yōu)化蛾扇,對(duì)電池電量的優(yōu)化攘烛,開(kāi)始智能化,會(huì)對(duì)用戶(hù)行為的學(xué)習(xí)及正確化引導(dǎo)镀首,網(wǎng)絡(luò)環(huán)境的智能適應(yīng)坟漱,更加人性化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末更哄,一起剝皮案震驚了整個(gè)濱河市芋齿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌成翩,老刑警劉巖觅捆,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異麻敌,居然都是意外死亡栅炒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)术羔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赢赊,“玉大人,你說(shuō)我怎么就攤上這事聂示∮蛐” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵鱼喉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我趋观,道長(zhǎng)扛禽,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任皱坛,我火速辦了婚禮编曼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剩辟。我一直安慰自己掐场,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布贩猎。 她就那樣靜靜地躺著熊户,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吭服。 梳的紋絲不亂的頭發(fā)上嚷堡,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音艇棕,去河邊找鬼蝌戒。 笑死串塑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的北苟。 我是一名探鬼主播桩匪,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼友鼻!你這毒婦竟也來(lái)了吸祟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤桃移,失蹤者是張志新(化名)和其女友劉穎屋匕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體借杰,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡过吻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔗衡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纤虽。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绞惦,靈堂內(nèi)的尸體忽然破棺而出逼纸,到底是詐尸還是另有隱情,我是刑警寧澤济蝉,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布杰刽,位于F島的核電站,受9級(jí)特大地震影響王滤,放射性物質(zhì)發(fā)生泄漏贺嫂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一雁乡、第九天 我趴在偏房一處隱蔽的房頂上張望第喳。 院中可真熱鬧,春花似錦踱稍、人聲如沸曲饱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扩淀。三九已至,卻和暖如春桥温,著一層夾襖步出監(jiān)牢的瞬間引矩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旺韭,地道東北人氛谜。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像区端,于是被迫代替她去往敵國(guó)和親值漫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評(píng)論 25 707
  • 不知為何,明明想和你說(shuō)話沥邻。 卻騙你說(shuō)危虱,風(fēng)雨正好,該去寫(xiě)點(diǎn)詩(shī)句唐全。 不必嘲諷我埃跷,你笑出聲來(lái), 我也當(dāng)是天籟邮利。 不必懷有...
    _湫子閱讀 494評(píng)論 0 1
  • 端午節(jié)的正確打開(kāi)方式:吃涼糕弥雹,插艾草,系五色索延届,掛香包剪勿。 親手做每一樣?xùn)|西,讓每一根絲線都充滿感情方庭,這就是儀式感厕吉。...
    王小唐閱讀 234評(píng)論 0 1
  • 看來(lái)是不應(yīng)該看太多的小說(shuō)和漫畫(huà),身為一個(gè)女孩子幻想得多了日子過(guò)起來(lái)就沒(méi)那么容易了 幻想中我肚子餓到疼的時(shí)候他應(yīng)該買(mǎi)...
    前田卯緒閱讀 193評(píng)論 0 0
  • 前段時(shí)間,我跟一個(gè)朋友聊天订讼,無(wú)意間聊到了前任這個(gè)話題。本來(lái)以為會(huì)有點(diǎn)尷尬扇苞,但是她的態(tài)度讓我覺(jué)得她現(xiàn)在一個(gè)人欺殿,過(guò)得也...
    筱陌_閱讀 794評(píng)論 1 0