做自(zì)由與創造的先行者

抽象化新 API

Android開(kāi)發手冊

假設您希望使用(yòng)操作(zuò)欄标簽頁作(zuò)爲應用(yòng)中的頂層導航的主要形式。很(hěn)遺憾,ActionBar API 僅适用(yòng)于 Android 3.0 或更高(gāo)版本(API 級别 11 及更高(gāo)級别)。因此,如果您希望将應用(yòng)分發到(dào)搭載更低(dī)版本平台的設備,則需要提供支持較新 API 的實現(xiàn),同時(shí)提供使用(yòng)較舊 API 的回退機制。

在本課程中,您會(huì)構建一個标簽頁式界面組件,該組件使用(yòng)具有版本特定實現(xiàn)的抽象類以提供向後兼容性。本節課介紹如何爲新标簽頁 API 創建抽象層,這(zhè)是構建标簽頁組件的第一步。

爲抽象化做準備

Java 編程語言中的抽象化涉及創建一個或多個接口或抽象類以隐藏實現(xiàn)細節。對(duì)于新的 Android API,您可以使用(yòng)抽象化來(lái)構建版本感知(zhī)組件,以在新設備上(shàng)使用(yòng)新的 API,而在舊設備上(shàng)回退到(dào)更兼容的舊 API。

使用(yòng)此方法時(shí),首先要确定要以向後兼容的方式使用(yòng)哪些(xiē)新類,然後根據新類的公共接口創建抽象類。在定義抽象接口時(shí),應盡可能(néng)鏡像新 API。這(zhè)可以最大(dà)限度地提高(gāo)向前兼容性,并且在未來(lái)不再需要抽象層時(shí),也(yě)更容易将其丢棄。

在爲這(zhè)些(xiē)新 API 創建抽象類之後,可以在運行時(shí)創建和(hé)選擇任意數量的實現(xiàn)。爲了(le)确保向後兼容性,這(zhè)些(xiē)實現(xiàn)可能(néng)會(huì)因所需的 API 級别而異。因此,一種實現(xiàn)可能(néng)使用(yòng)最近發布的 API,而其他(tā)實現(xiàn)可能(néng)使用(yòng)舊 API。

創建抽象标簽頁接口

要創建标簽頁的向後兼容版本,應首先确定您的應用(yòng)需要哪些(xiē)功能(néng)和(hé)特定的 API。對(duì)于頂部的标簽頁,假設您具有以下(xià)功能(néng)要求:

标簽頁标識應顯示文(wén)本和(hé)圖标。

标簽頁可以與 fragment 實例關聯。

Activity 應該能(néng)夠監聽标簽頁更改。

提前準備好(hǎo)這(zhè)些(xiē)要求可讓您控制抽象層的範圍。這(zhè)意味着您可以花(huā)更少的時(shí)間創建抽象層的多個實現(xiàn),并更快(kuài)開(kāi)始使用(yòng)新的向後兼容實現(xiàn)。

标簽頁的主要 API 位于 ActionBar 和(hé) ActionBar.Tab 中。這(zhè)些(xiē)是爲了(le)使标簽頁能(néng)夠感知(zhī)版本而抽象化的 API。此示例項目的要求是向後兼容 Eclair(API 級别 5),同時(shí)充分利用(yòng) Honeycomb(API 級别 11)中的新标簽頁功能(néng)。

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:用(yòng)新版 API 代理(lǐ)
上(shàng)一篇:Android構建離線優先應用(yòng)