Android版本日新月異而克,幾乎每年都有一到兩個新的版本發(fā)布溢吻,在此整理一下Android各個版本的特性维费。
KitKat
Api Level 19 Android 4.4 有以下個人覺得經(jīng)常用的特性 詳細見官方文檔
READ_EXTERNAL_STORAGE權限改動
這個版本最早開始引入Android的安全機制,權限申請功能促王。官方文檔是這么說的犀盟,在這個版本中,無法讀取外部存儲空間上的共享文件蝇狼,manifest中申請READ_EXTERNAL_STORAGE權限阅畴,否則無法訪問
getExtrenalStoragePublicDirectory()
返回目錄中的文件,但是如果只需要訪問
getExternalFilesDir()
提供的應用持有目錄就不需要這個權限
WebView 改動
官方聲明在這個版本W(wǎng)ebView
底層代碼和相關的api 升級為基于現(xiàn)代chromium的源代碼迅耘,就是說在這個版本后webView的性能得到大幅度提升贱枣,所以說嵌入H5過多的應用可以將targetSdkVersion更改到18 來測試對于老手機的兼容性
短信提供程序
個人覺得這個功能主要是用在驗證碼比較多的應用中,像貸款颤专,和金融類應用纽哥,經(jīng)常需要一堆驗證碼,可以考慮接一個這個自動獲取驗證碼
telephony 內(nèi)容提供程序允許應用讀取設備的短息和彩信包含已經(jīng)接受栖秕、起草春塌、發(fā)送、掛起等操作的短信。 通過偵聽SMS_RECEIVED_ACTION 來獲取短信里的內(nèi)容只壳。
紅外線發(fā)射器
這個功能主要是我之前寫過一個遙控器的應用去搞公司那個牛掰的空調(diào)俏拱。
這個功能要求設備必須有紅外線發(fā)射器才可以 可以通過
hasIrEmitter() //獲取設備是否附帶紅外發(fā)射器
<uses-feature> "android.hardware.consumerir"</uses-feature>
ConsumerIdManager consumerManager = (ConsumerIdManager)Context.getSystemService(Context.CONSUMER_IR_SERVICE)
來獲取參數(shù),然后通過
getCarrierFrequencies() //查詢設備支持的紅外線頻率
transmit()//發(fā)射信號
多媒體
我沒怎么開發(fā)過多媒體應用吼句,所以這里感覺寫的挺牛逼的彰触,但是沒怎么實踐過
動畫和圖形
場景和轉場動畫
在這里說一下轉場動畫這個東西,當我們需要轉場的時候步驟一般是這樣的:
1命辖、制定包含您要更改的UI組件的ViewGroup
2况毅、指定表示變更的最終結果的布局(下一個場景)
3、指定應添加布局變更動畫的轉場類型
4尔艇、轉場
您可以使用 Scene對象完成第 1 步和第 2 步尔许。
Scene` 包含描述執(zhí)行轉場所必需的布局屬性的元數(shù)據(jù),其中包括場景的父視圖和場景布局终娃。您可以使用類構造函數(shù)或靜態(tài)方法 getSceneForLayout()創(chuàng)建 Scene味廊。
然后,您必須使用 TransitionManager 完成第 3 步和第 4 步棠耕。其中一個方法是將您的 Scene 傳遞到靜態(tài)方法 go()余佛。這樣可在當前布局中找到場景的父視圖,并在子視圖上執(zhí)行轉場窍荧,以實現(xiàn) Scene 定義的布局辉巡。
或者,您根本不需要創(chuàng)建 Scene`對象蕊退,而是改為調(diào)用 beginDelayedTransition()郊楣,指定一個包含您要更改的視圖的 ViewGroup。然后瓤荔,添加净蚤、移除或重新配置目標視圖。在系統(tǒng)根據(jù)需要進行更改后输硝,轉場開始以動畫方式呈現(xiàn)所有受影響的視圖今瀑。
要進行其他控制,您可以使用項目 res/transition/
目錄中的 XML 文件定義應在預定義的場景間發(fā)生的轉場集点把。在 <transitionManager>
元素內(nèi)部橘荠,指定一個或多個 <transition>
標記,每個標記均指定一個場景(引用布局文件)以及進入和/或退出該場景時將應用的轉場愉粤。然后砾医,使用 inflateTransitionManager() 擴展此轉場集。使用返回的 TransitionManager 通過 transitionTo() 執(zhí)行每個轉場衣厘,傳遞一個由 <transition>
標記表示的 Scene如蚜。您還可以使用 TransitionManager API 以編程方式定義轉場集压恒。
指定轉場時,您可以使用 Transition 的子類(如 Fade 和 ChangeBounds`)定義的多個預定義類型错邦。如果您不指定轉場類型探赫,系統(tǒng)會默認使用 AutoTransition,其根據(jù)需要自動消失撬呢、移動和重新調(diào)整視圖伦吠。此外窗轩,您也可以通過擴展其中的任何一個類來創(chuàng)建自定義轉場琳猫,以執(zhí)行您需要的動畫岖瑰。自定義轉場可以跟蹤您想要跟蹤的任何屬性變更布朦,并基于這些變更創(chuàng)建您需要的任何動畫。例如撩银,您可以提供 Transition的子類淳地,用于偵聽對視圖的“旋轉”屬性進行的變更著拭,然后以動畫方式呈現(xiàn)所有變更荷愕。
如需了解詳細信息衡怀,請參閱 TransitionManager 文檔。
用戶界面模塊
沉浸式全屏
要為您的應用提供填充整個屏幕的布局安疗,適用于 setSystemUiVisibility() 的新標記 SYSTEM_UI_FLAG_IMMERSIVE(與 SYSTEM_UI_FLAG_HIDE_NAVIGATION 結合使用時)將啟用新的沉浸式全屏模式抛杨。在啟用沉浸式全屏模式后,您的 Activity 將繼續(xù)接收所有觸摸事件荐类。用戶可以沿著系統(tǒng)狀態(tài)欄正常出現(xiàn)的區(qū)域向內(nèi)滑動來顯示系統(tǒng)狀態(tài)欄怖现。這將清除 SYSTEM_UI_FLAG_HIDE_NAVIGATION 標記(如果應用了 SYSTEM_UI_FLAG_FULLSCREEN標記,也會清除該標記)掉冶,因此系統(tǒng)狀態(tài)欄保持可見狀態(tài)真竖。但是,如果您想要系統(tǒng)狀態(tài)欄在片刻后再次隱藏厌小,可以改用 SYSTEM_UI_FLAG_IMMERSIVE_STICKY 標記。
透明系統(tǒng)狀態(tài)欄
現(xiàn)在战秋,您可以使用新主題背景 Theme.Holo.NoActionBar.TranslucentDecor 和 Theme.Holo.Light.NoActionBar.TranslucentDecor 將系統(tǒng)狀態(tài)欄設置為部分透明璧亚。通過啟用透明系統(tǒng)狀態(tài)欄,您的布局將填充系統(tǒng)狀態(tài)欄后面的區(qū)域脂信,因此癣蟋,您也必須為不應被系統(tǒng)狀態(tài)欄覆蓋的布局部分啟用 fitsSystemWindows。
如果您要創(chuàng)建自定義主題背景狰闪,則將其中某個主題背景設置為父主題背景疯搅,或在您的主題背景中添加 windowTranslucentNavigation 和 windowTranslucentStatus 樣式屬性
增強的通知偵聽器
Android 4.3 添加了 NotificationListenerService API,從而允許應用在系統(tǒng)發(fā)布新通知后接收有關新通知的信息埋泵。在 Android 4.4 中幔欧,通知偵聽器可以檢索通知的附加元數(shù)據(jù)罪治,并填寫有關通知操作的詳細信息:
新增的 Notification.extras字段包含一個 Bundle,以向您的通知生成器提供 EXTRA_TITLE和 EXTRA_PICTURE等附加元數(shù)據(jù)礁蔗。新增的 Notification.Action 類定義附加到通知的操作的特性觉义,您可以從新的 actions 字段中檢索這些特性。