API 級別:11
開發人員可使用 Android 3.0 平台
(HONEYCOMB
) 可供下載
Android SDK 專用的元件可下載的平台包含 Android 程式庫和系統
以及一組模擬器外觀等項目可下載的平台不含外部
程式庫
開發人員可以用 Android 3.0 平台 適用於 Android SDK 的可下載元件。可下載的平台包括 Android 程式庫和系統映像檔,以及一組模擬器外觀 內容。如要開始針對 Android 3.0 進行開發或測試 使用 Android SDK Manager 將這個平台下載到 SDK。
API 總覽
以下各節提供技術總覽,說明 Android 3.0 開發人員的新功能。 包括上個版本以來的架構 API 的新功能與變更
片段
片段是新的架構元件,可讓您將活動的不同元素分割為獨立的模組,並定義各自的 UI 和生命週期。如要建立
片段,您必須擴充 Fragment
類別並實作多個生命週期
回呼方法,與 Activity
類似。接著,您可以將多個片段結合為單一活動,建立多窗格 UI,其中每個窗格都會管理其生命週期和使用者輸入內容。
您也可以在不提供 UI 的情況下使用片段,並改用該片段做為工作站 例如管理下載進度 活動正在進行中。
其他規範事項如下:
- 片段是獨立的,您可以在多個活動中重複使用
- 您可以新增、移除、取代活動中的片段,以及將片段加入動畫效果
- 您可以將片段新增至由活動管理的返回堆疊,保留片段變更時的狀態,並讓使用者透過不同狀態返回瀏覽
- 提供其他版面配置,您可以根據螢幕大小和方向混合搭配片段
- 片段可直接存取其容器活動,並可為活動的動作列提供項目 (詳見下文)
如要管理活動中的片段,您必須使用 FragmentManager
,其提供多個用於與片段互動的 API,例如
例如在活動中尋找片段,並從返回堆疊中彈出片段以還原
先前的狀態
如要執行交易 (例如新增或移除片段),則必須建立 FragmentTransaction
。接著,您可以呼叫 add()
remove()
或 replace()
等方法。套用所有必要資訊後
要對交易執行的變更,您必須呼叫 commit()
,然後系統會套用片段交易
該活動。
若要進一步瞭解如何使用片段,請參閱「片段」說明文件。數個 如需使用範例,請前往 「API Demos」應用程式。
動作列
動作列會取代活動視窗頂端的傳統標題列。 「小工具」的左側角落提供了應用程式標誌,並為 選項選單。此外,您也可以透過「動作列」執行下列操作:
- 直接在動作列中新增選單項目,做為「操作項目」。
在選單項目的 XML 宣告中,加入值為
"ifRoom"
的android:showAsAction
屬性。如果有足夠的空間,選單項目會直接顯示在動作列中。如果沒有,系統會將項目放在 溢位選單。這個選單會顯示在動作列右側的選單圖示。 - 使用小工具 (例如搜尋方塊) 取代動作項目,建立「動作檢視畫面」。
在選單項目的 XML 宣告中加入
android:actionViewLayout
屬性 含有版面配置資源或含有類別名稱的android:actionViewClass
屬性 (您也必須宣告android:showAsAction
屬性,才能讓項目顯示在動作列中)。如果動作列沒有足夠的空間,而項目出現在溢位選單中,則會像一般選單項目一樣運作,不會顯示小工具。 - 為應用程式標誌新增動作,並以自訂標誌取代
系統會自動為應用程式標誌指派
android.R.id.home
ID,並在觸碰時將其傳送至活動的onOptionsItemSelected()
回呼。只要在回呼方法中回應這個 ID,即可執行特定動作,例如前往應用程式的「home」活動。如要將圖示替換為標誌,請使用
android:logo
屬性在資訊清單檔案中指定應用程式標誌,然後在活動中呼叫setDisplayUseLogoEnabled(true)
。 - 新增導覽標記以在片段的返回堆疊中返回
- 新增分頁或下拉式清單來瀏覽片段
- 使用主題和背景自訂動作列
對於使用新全像主題的所有應用程式,動作列都是標準配備,而當您將 android:minSdkVersion
或 android:targetSdkVersion
設為 "11"
時,這也是標準配備。
如要進一步瞭解動作列,請參閱動作列說明文件。數個 如需使用範例,請前往 「API Demos」應用程式。
系統剪貼簿
應用程式現在可以將資料 (不限於文字) 複製到系統級剪貼簿,並從中貼上資料。裁剪的資料可以是純文字、URI 或意圖。
透過內容供應器,讓系統存取您希望使用者複製的資料,使用者就能從您的應用程式複製複雜的內容 (例如圖片或資料結構),並貼到支援該類型內容的其他應用程式中。
如要開始使用剪貼簿,請呼叫 getSystemService(CLIPBOARD_SERVICE)
取得全域 ClipboardManager
物件。
如要將項目複製到剪貼簿,您必須建立新的 ClipData
物件,其中會保留一或多個 ClipData.Item
物件,每個物件會描述單一實體。如何建立 ClipData
物件
只包含一個 ClipData.Item
,這時您可以使用其中一種輔助方法
例如 newPlainText()
、newUri()
和 newIntent()
,每個物件都會傳回已預先載入ClipData
您提供的 ClipData.Item
。
如要將 ClipData
新增至剪貼簿,請將其傳遞至 ClipboardManager
例項的 setPrimaryClip()
。
接著,您可以呼叫 ClipboardManager
上的 getPrimaryClip()
,從剪貼簿讀取檔案 (以便貼上)。處理您收到的 ClipData
但您必須確保自己能確實處理剪貼簿中的資料類型
再嘗試貼上內容
剪貼簿一次只能保留一筆剪輯資料 (ClipData
物件),但一個 ClipData
可包含多個 ClipData.Item
。
詳情請參閱複製 並貼上說明文件。您也可以在 API 示範中 查看 複製和貼上 的簡易實作方式 ,並透過「備忘錄」範例取得更完整的實作。
拖曳
新的 API 可簡化應用程式使用者介面中的拖曳作業。拖曳
作業是指傳輸某種資料—儲存在 ClipData
中
物件) 物件拖曳作業的起點和終點為 View
,因此直接處理拖曳作業的 API 會
在 View
類別中。
拖曳作業具有由多種拖曳動作定義的生命週期,
由 DragEvent
物件定義,例如 ACTION_DRAG_STARTED
、ACTION_DRAG_ENTERED
和
ACTION_DROP
。想參與拖曳事件的檢視畫面
作業即可監聽這些動作。
如要開始在活動中拖曳內容,請在 View
上呼叫 startDrag()
,提供代表要拖曳的資料的 ClipData
物件、方便使用者在拖曳時看到手指下方「陰影」的 View.DragShadowBuilder
,以及可與可能接收物件的檢視畫面分享拖曳物件資訊的 Object
。
如要在 View
中接受拖曳物件 (接收「放置」),請註冊檢視畫面
呼叫 setOnDragListener()
來使用 OnDragListener
當檢視畫面發生拖曳事件時,系統會為 OnDragListener
呼叫 onDrag()
,而 onDrag()
會接收 DragEvent
,描述已發生的拖曳動作類型 (例如 ACTION_DRAG_STARTED
、ACTION_DRAG_ENTERED
和 ACTION_DROP
)。在拖曳期間,系統會針對拖曳下方的檢視畫面重複呼叫 onDrag()
,以提供拖曳事件的串流。接收檢視區塊可在 DragEvent
上呼叫 getAction()
,註冊傳送至 onDragEvent()
的事件類型。
注意:雖然拖曳事件可能會攜帶 ClipData
物件,但這與系統剪貼簿無關。拖曳作業絕不應將拖曳的資料放入系統剪貼簿。
詳情請參閱「拖曳和放置」說明文件。您也可以在 API 示範應用程式和 Honeycomb 相片庫應用程式中,查看拖曳功能的實作方式。
應用程式小工具
Android 3.0 支援多種新的小工具類別,可為使用者提供更具互動性的應用程式小工具
主畫面,包括:GridView
、ListView
、StackView
、ViewFlipper
和AdapterViewFlipper
。
更重要的是,您可以使用新的 RemoteViewsService
建立應用程式
整合含有集合的小工具,以及使用遠端資料支援的小工具,例如 GridView
、ListView
和 StackView
;
例如內容供應者
AppWidgetProviderInfo
類別 (在含有 <appwidget-provider>
元素的 XML 中定義) 也支援兩個新欄位:autoAdvanceViewId
和 previewImage
。autoAdvanceViewId
欄位可讓您指定
應用程式小工具子檢視畫面應該由應用程式小工具主機自動進階。
previewImage
欄位會指定
應用程式小工具的外觀,並會透過小工具挑選器向使用者顯示。如果不支援這個欄位
提供後,應用程式小工具的圖示就會用於預覽畫面。
為了協助您為應用程式小工具建立預覽圖片 (請在 previewImage
欄位中指定),Android Emulator 包含名為「Widget Preview」的應用程式。如要建立預覽圖片,請啟動這個應用程式,然後選取
再設定預覽圖片的顯示方式,然後儲存
並放到應用程式的可繪製資源中
您可以在 StackView 應用程式小工具和 天氣清單小工具應用程式中,查看新應用程式小工具功能的實作方式。
狀態列通知
Notification
API 已擴充,可支援更多內容豐富的狀態列通知,此外,新的 Notification.Builder
類別可讓您輕鬆建立 Notification
物件。
新功能包括:
- 使用
setLargeIcon()
,支援通知中的大型圖示。這項權限通常是讓社群應用程式顯示通知來源聯絡人的聯絡人相片,或是讓媒體應用程式顯示相簿縮圖。 - 使用
setTicker()
支援狀態列資訊列中的自訂版面配置。 - 支援自訂通知版面配置,納入含有
PendingIntent
的按鈕,提供更互動式的通知小工具。舉例來說,通知可以控制音樂播放,而無須啟動活動。
內容載入器
新的架構 API 有助於使用 Loader
類別,以非同步方式載入資料。您可以將其與 UI 元件 (例如 View 和 Fragment) 搭配使用,從 worker 執行緒動態載入資料。CursorLoader
子類別專門用來協助您處理
ContentProvider
。
您只需實作 LoaderCallbacks
介面,即可在要求新的載入器或資料
已變更,然後呼叫 initLoader()
來初始化
。
詳情請參閱「Loaders」說明文件。您也可以在 LoaderCursor 和 LoaderThrottle 範例中,查看使用載入器的程式碼範例。
藍牙 A2DP 和耳機 API
Android 現已提供 API,可讓應用程式驗證已連線的藍牙 A2DP 和耳機設定檔裝置狀態。舉例來說,應用程式可以識別藍牙耳機 連線聆聽音樂,並視情況通知使用者。應用程式還可能會收到 播送供應商專屬的 AT 指令,並通知使用者連線狀態。 ,例如連結裝置的電池電量不足時。
您可以使用 A2DP
或 HEADSET
呼叫 getProfileProxy()
,藉此初始化各自的 BluetoothProfile
設定檔常數和 BluetoothProfile.ServiceListener
,以便接收
藍牙用戶端連線或中斷連線時的回呼。
動畫架構
全新的彈性動畫架構可讓你為任何物件的任意屬性建立動畫 (View、Drawable、Fragment、Object 或任何其他項目)。可讓您定義動畫的幾個面向,例如:
- 時間長度
- 重複次數和行為
- 內插時間類型
- Animator 會設定動畫一起播放、依序播放,或在指定延遲時間後播放
- 影格重新整理延遲時間
您可以為物件的 int、float 和十六進位色彩值定義這些動畫面向和其他面向 (預設)。也就是說,當物件包含這些型別的屬性欄位時,
可以隨著時間變更數值來調整動畫。如要為任何其他類型的值加上動畫效果
系統如何藉由實作 TypeEvaluator
介面,計算該指定類型的值。
您可以使用兩個動畫工具,為屬性值的動畫效果加上動畫效果:ValueAnimator
和 ObjectAnimator
。ValueAnimator
會計算動畫值,但不會瞭解會產生動畫的特定物件或屬性。它只會執行計算,且您必須
監聽更新,並使用自己的邏輯處理資料。ObjectAnimator
是 ValueAnimator
和
可讓您設定物件和屬性動畫,並處理所有動畫工作。
也就是說,您將要製作動畫的物件、物件隨著時間變化的屬性,以及一組要套用至屬性的值,提供給 ObjectAnimator
,然後開始製作動畫。
此外,LayoutTransition
類別可讓您在變更活動版面配置時,自動顯示轉場動畫。如要為版面配置的部分啟用轉場效果,請建立 LayoutTransition
物件,然後呼叫 setLayoutTransition()
將其設為任何 ViewGroup
。這樣一來,當您在群組中新增或移除項目時,系統就會執行預設動畫。如何指定自訂項目
動畫、在 LayoutTransition
上呼叫 setAnimator()
,並提供自訂 Animator
,
例如:ValueAnimator
或 ObjectAnimator
。
詳情請參閱「屬性動畫」說明文件。您也可以在 API 範例應用程式中,查看幾個使用動畫 API 的範例。
擴充的 UI 架構
- ListView 和 GridView 的複選選項
適用於
setChoiceMode()
的全新CHOICE_MODE_MULTIPLE_MODAL
模式可讓使用者選取多個項目 來自ListView
或GridView
。用於 也可以將動作列與動作列搭配使用,讓使用者可以選取多個項目並選取所需動作 從動作列的選項清單中執行 (已轉變為複選題) 動作模式)。如要啟用複選功能,請呼叫
setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL)
並註冊MultiChoiceModeListener
:setMultiChoiceModeListener()
。當使用者長按項目時,動作列會切換為「複選」選項 動作模式。透過呼叫
onItemCheckedStateChanged()
選取項目時,系統會通知MultiChoiceModeListener
。如需多重選擇選項的範例,請參閱 API 示範應用程式中的 List15.java 類別。
- 用於轉換檢視畫面的新 API
新的 API 可讓您輕鬆將 2D 和 3D 轉換套用至活動版面配置中的檢視畫面。您可以使用一組物件屬性,定義檢視畫面的 版面配置位置、方向、透明度等
設定檢視區塊屬性的新方法包括:
setAlpha()
、setBottom()
、setLeft()
、setRight()
、setBottom()
、setPivotX()
、setPivotY()
、setRotationX()
、setRotationY()
、setScaleX()
、setScaleY()
、setAlpha()
等。有些方法也有對應的 XML 屬性,您可以在版面配置檔案中指定這些屬性,以套用預設轉換。可用的屬性包括:
translationX
、translationY
、rotation
、rotationX
、rotationY
、scaleX
、scaleY
、transformPivotX
、transformPivotY
和alpha
。您可以使用部分新的檢視畫面屬性,搭配新的動畫架構 (如上所述),輕鬆為檢視畫面套用精美的動畫。舉例來說,如要旋轉 y 軸上的檢視畫面,請為
ObjectAnimator
提供View
、"rotationY" 屬性,以及開始和結束值:Kotlin
ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply { duration = 2000 start() }
Java
ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360); animator.setDuration(2000); animator.start();
- 全新全像主題
標準系統小工具和整體外觀已重新設計,並結合全新的 「全像投影」使用者介面主題系統會使用標準的樣式和主題系統套用新主題。
任何以 Android 3.0 平台為目標的應用程式,只要將
android:minSdkVersion
或android:targetSdkVersion
值設為"11"
,就會預設繼承全像主題。但是,如果您的應用程式也套用本身的主題,您的主題就會覆寫 全像主題。除非您更新樣式來沿用全景主題。如何為個別活動套用全景主題,或是沿用自己的主題 ,請使用其中一個新的
Theme.Holo
主題。如果您的應用程式與 Android 3.0 以下版本相容,且適用 自訂主題,則您應該根據平台選取主題 版本。 - 新小工具
AdapterViewAnimator
AdapterView
的基礎類別,會在切換其檢視畫面時執行動畫。AdapterViewFlipper
簡易的
ViewAnimator
,可在兩個以上的檢視畫面之間建立動畫效果 已加入。系統一次只會顯示一名兒童。如有需要,裝置可自動切換 介於 每個子項按照規律的間隔CalendarView
使用者只要輕觸日期,即可從日曆中選取日期,同時可以捲動或快速滑過 到指定日期您可以在小工具中設定可用的日期範圍。
ListPopupWindow
錨定至主機檢視畫面,並顯示選項清單,例如列出 在
EditText
檢視畫面中輸入內容時提供建議。NumberPicker
可讓使用者從預先定義的範圍中選取數字。小工具會顯示輸入內容 或向上和向下按鈕,即可選取數字。使用者只要輕觸輸入欄位,即可捲動瀏覽值,或再次輕觸來直接編輯目前的值。您也可以將位置對應至字串,以便顯示相應的字串,而非索引位置。
PopupMenu
在錨定至檢視區塊的強制回應彈出式視窗中顯示
Menu
。如果有空間,彈出式視窗會顯示在錨定檢視畫面下方,如果沒有空間,則會顯示在檢視畫面上方。如果輸入法編輯器 (軟體鍵盤) 顯示在畫面上,除非使用者輕觸選單,否則彈出式視窗不會重疊輸入法編輯器。SearchView
提供搜尋框,您可以設定該框,將搜尋查詢傳送至指定活動,並顯示搜尋建議 (與傳統搜尋對話方塊相同)。這個 小工具在動作列中提供搜尋小工具時特別實用。詳情請參閱「建立搜尋介面」。
StackView
以 3D 堆疊顯示子項並允許使用者滑動的檢視畫面 就像 rolodex 一樣
圖形
- 硬體加速 2D 圖形
您現在可以在資訊清單元素的
<application>
中設定android:hardwareAccelerated="true"
,為應用程式啟用 OpenGL 轉譯器 元素或個別<activity>
元素。這個標記可協助應用程式加快繪製速度。這可以讓動畫更流暢 的捲動速度更順暢,整體效能和回應使用者互動的反應也更佳。
- 查看硬體和軟體層支援資訊
根據預設,
View
未指定任何圖層。您可以使用setLayerType()
或layerType
屬性,指定檢視畫面由硬體或軟體層支援,並使用LAYER_TYPE_HARDWARE
和LAYER_TYPE_SOFTWARE
值指定。硬體層是由硬體專屬紋理 (通常是 OpenGL 硬體上的 Frame Buffer Objects 或 FBO) 支援,並會導致系統使用 Android 的硬體算繪管道算繪檢視畫面,但只有在為檢視畫面階層啟用硬體加速功能時才會如此。硬體 加速功能則會關閉,硬體層的運作方式和軟體層完全相同。
軟體層由點陣圖支援,因此即使已啟用硬體加速功能,系統仍會使用 Android 的軟體算繪管道算繪檢視畫面。軟體層 會避開這個錯誤。每次更新都需要重新轉譯軟體層,因此可能會比較慢。
詳情請參閱
LAYER_TYPE_HARDWARE
和LAYER_TYPE_SOFTWARE
的說明文件。 - Renderscript 3D 圖形引擎
Renderscript 是一種執行階段 3D 架構,同時提供用於建構 3D 場景的 API 。使用 Renderscript 時 能加快圖像處理與資料處理速度Renderscript 是建立容器映像檔的好方法 無論是應用程式、桌布、輪轉介面等等,都能提供高效能的 3D 效果。
詳情請參閱「使用 Renderscript 進行 3D 算繪和運算」說明文件。
媒體
- 縮時攝影影片
Camcorder API 現在支援錄製縮時攝影影片。
setCaptureRate()
會設定應擷取影格速率。 - 圖片串流的紋理支援
新的
SurfaceTexture
可讓您以 OpenGL ES 形式擷取圖片串流 生成的圖片呼叫setPreviewTexture()
即可:Camera
執行個體時,您可以指定SurfaceTexture
,從這個位置擷取影片播放或預覽影格 相機上 - HTTP 直播
應用程式現在可以將 M3U 播放清單網址傳送至媒體架構,以啟動 HTTP 直播 每個 Pod 都有一個 IP 位址媒體架構支援大多數的 HTTP 即時串流規格,包括動態位元率。請參閱支援的媒體格式文件,瞭解 瞭解詳情
- EXIF 資料
ExifInterface
包含相片光圈、ISO 和曝光的新欄位 讓應用程式從可以最快做出回應的位置 回應使用者要求 - 攝錄影機資料
新增
hasProfile()
方法和多部影片 優質的設定檔 (例如QUALITY_1080P
、QUALITY_720P
、QUALITY_CIF
等) 可讓您判斷攝影機 品質選項 - 數位媒體檔案傳輸
這個平台內建 USB 媒體/圖像傳輸通訊協定 (MTP/PTP) 支援功能, 讓使用者輕鬆在裝置與主機電腦之間傳輸任何類型的媒體檔案。 開發人員可以利用這項支援功能,建立可讓使用者建立或管理跨裝置傳輸或分享的多媒體檔案的應用程式。
- 數位版權管理 (DRM)
用於檢查及實施數位的可擴充數位版權管理 (DRM) 架構 權利。這項功能已在兩個架構層中實作:
- DRM 架構 API。這個 API 會向應用程式公開,並透過 Dalvik VM 執行 標準應用程式
- 實作架構 API 及提供 DRM 介面的原生程式碼 DRM Manager 這個外掛程式,可以處理多種數位著作權管理機制的版權管理和解密作業。
對於應用程式開發人員而言,此架構提供抽象且統一的 API,可簡化受保護內容的管理作業。這個 API 會隱藏 DRM 作業的複雜性,並允許在受保護和未受保護的內容,以及各種 DRM 配置中,使用一致的作業模式。
對於裝置製造商、內容擁有者和網路數位媒體供應商而言,DRM 架構的外掛程式 API 提供了一種方法,可在 Android 系統中新增所選 DRM 方案的支援,以便安全執行內容保護措施。
預先發布版並未提供用於檢查及強制執行數位的原生 DRM 外掛程式 權利。不過,裝置製造商可能會將 DRM 外掛程式與他們的裝置一起提供。
您可以在
android.drm
套件中找到所有 DRM API。
鍵盤支援
- 支援 Control、Meta、Caps Lock、Num Lock 和 Scroll Lock 修飾符。如需更多資訊
請參閱
META_CTRL_ON
和相關欄位。 - 支援完整的電腦鍵盤,包括支援 Escape、Home、End、Delete 等鍵。您可以查詢
getKeyboardType()
並檢查KeyCharacterMap.FULL
,判斷按鍵事件是否來自完整鍵盤。 TextView
現在支援以鍵盤為基礎的剪下、複製和 使用 Control+X、Control+C 鍵和 Ctrl + V 鍵和 Control + A 鍵也支援 PageUp/PageDown、Home/End 和 以鍵盤為基礎的文字選取功能KeyEvent
會新增多個新方法,方便您查看金鑰 確保修飾符狀態一致請參閱hasModifiers(int)
,hasNoModifiers()
,metaStateHasModifiers()
,metaStateHasNoModifiers()
。- 應用程式可以透過將
Activity
、Dialog
或View
設為子類別,並實作onKeyShortcut()
,來實作自訂鍵盤快速鍵。架構會呼叫這個方法 則每次鍵與 Control 鍵結合時建立選項選單時,您可以註冊鍵盤 捷徑,方法是設定每個<item>
的android:alphabeticShortcut
或android:numericShortcut
屬性 元素 (或包含setShortcut()
元素)。 - Android 3.0 包含新的「虛擬鍵盤」裝置,其 ID 為
KeyCharacterMap.VIRTUAL_KEYBOARD
。虛擬鍵盤提供桌面風格的美國鍵盤對應表,可用於合成測試輸入內容的重要事件。
分割觸控事件
先前,一次只能在單一檢視畫面接受觸控事件。Android 3.0 版 支援在各個檢視畫面及甚至視窗之間分割觸控事件,因此不同的檢視畫面可接受 同時進行的觸控事件。
在應用程式目標鎖定時,系統會預設啟用分割觸控事件
Android 3.0。也就是說,如果應用程式已將 android:minSdkVersion
或 android:targetSdkVersion
屬性的值為 "11"
。
不過,下列屬性可讓您停用不同檢視畫面中的分割觸控事件 特定檢視區塊群組和跨視窗。
- 檢視區塊群組的
android:splitMotionEvents
屬性 可讓您停用在版面配置中不同子檢視畫面之間的分割觸控事件。例如:<LinearLayout android:splitMotionEvents="false" ... > ... </LinearLayout>
這樣一來,線性版面配置中的子項檢視畫面就無法分割觸控事件,因為一次只能有一個檢視畫面接收觸控事件。
android:windowEnableSplitTouch
樣式屬性 將分割觸控事件套用至活動的主題,即可停用跨視窗的分割觸控事件 或整個應用程式例如:<style name="NoSplitMotionEvents" parent="android:Theme.Holo"> <item name="android:windowEnableSplitTouch">false</item> ... </style>
當這個主題套用到
<activity>
或<application>
時, 只接受目前活動時間範圍內的觸控事件。例如 跨視窗的觸控事件,系統列無法同時接收觸控事件 活動。這「不會」影響活動中的檢視畫面是否能分割觸控功能 事件:根據預設,活動仍可將觸控事件分割至不同檢視畫面。如要進一步瞭解如何建立主題,請參閱「套用樣式和主題」。
WebKit
- 新增
WebViewFragment
類別,用於建立由WebView
。 - 新的
WebSettings
方法:setDisplayZoomControls()
可讓你隱藏 畫面上的縮放控制項,同時仍允許使用者用手指手勢縮放 (必須設定setBuiltInZoomControls()
true
)。- 新的
WebSettings
方法setEnableSmoothTransition()
可讓您 可讓您在平移和縮放時順利轉換。啟用後,WebView 會選擇解決方案 以盡可能提高效能 (例如,在開啟叢集期間,WebView 的內容可能無法更新 轉換)。
- 新的
WebView
方法:onPause()
回呼 (用於暫停任何處理) 與 WebView 隱藏時的所有關聯。這有助於減少不必要的 CPU WebView 並非在前景執行時所獲得的網路流量。onResume()
回呼,以便繼續處理 與 WebView 相關聯 (在onPause()
中暫停)。saveWebArchive()
可讓您儲存 顯示為裝置上的網頁封存檔。showFindDialog()
會在目前的檢視畫面中啟動文字搜尋。
Browser
「瀏覽器」應用程式新增以下功能來支援網頁應用程式:
- 媒體擷取
根據 HTML 媒體擷取規格定義,瀏覽器可讓網頁應用程式存取裝置的音訊、圖片和影片擷取功能。例如,下列 HTML 會提供輸入內容,讓使用者擷取要上傳的相片:
<input type="file" accept="image/*;capture=camera" />
或者,您也可以排除
capture=camera
參數,讓使用者選擇要使用相機拍攝新圖片,或是從裝置 (例如相片庫應用程式) 中選取圖片。 - 裝置方向
根據裝置方向事件定義 的規格,瀏覽器允許網頁應用程式監聽提供資訊的 DOM 事件 裝置的實際方向和動作。
裝置螢幕方向會以 x、y 和 z 軸表示,以度為單位, 以加速和旋轉率資料表示。網頁可註冊螢幕方向 使用事件類型為
"deviceorientation"
來呼叫window.addEventListener
的事件 ,並註冊"devicemotion"
事件類型,註冊動作事件。 - CSS 3D 轉換
根據 CSS 3D 轉換模組規格定義,瀏覽器允許以三維方式轉換由 CSS 算繪的元素。
JSON 公用程式
新的類別 JsonReader
和 JsonWriter
可協助您讀取及寫入 JSON 串流。新的 API 可補足 org.json
類別,後者會在記憶體中操作文件。
您可以呼叫以下程式碼,建立 JsonReader
的執行個體:
其建構函式方法並傳遞動態饋給 JSON 字串的 InputStreamReader
。
接著,請呼叫 beginObject()
開始讀取物件,使用 nextName()
讀取鍵名稱,使用各類型的方法讀取值 (例如 nextString()
和 nextInt()
),並在 hasNext()
為 true 時繼續執行。
您可以呼叫其建構函式,以建立 JsonWriter
的例項。
傳遞適當的 OutputStreamWriter
。接著,以類似讀取器的方式寫入 JSON 資料,使用 name()
新增屬性名稱,並使用適當的 value()
方法新增相應值。
這些類別預設為嚴格限制。每個類別中的 setLenient()
方法會將類別設為更寬鬆的接受條件。這個寬鬆的剖析模式也與 org.json
的預設剖析器相容。
新功能常數
您應使用 <uses-feature>
資訊清單元素,向外部實體 (例如 Google Play) 告知應用程式依附的硬體和軟體功能組合。在這個版本中,Android 新增了
下列新常數可供應用程式使用此元素宣告:
"android.hardware.faketouch"
宣告這項功能後,表示應用程式與提供模擬觸控螢幕 (或更高級別) 的裝置相容。提供模擬觸控螢幕的裝置會提供使用者輸入系統,可模擬觸控螢幕的部分功能。例如,滑鼠或遙控器 畫面上的遊標這類輸入系統支援基本觸控事件,例如點按、向上和拖曳。 不過,較複雜的輸入類型 (例如手勢、快速滑過等) 可能較為困難或 不適用於假觸控裝置 (而且多點觸控手勢絕對無法使用)。
如果應用程式「不」需要複雜的手勢,且您「不」希望應用程式從配備模擬觸控螢幕的裝置中篩除,請使用
<uses-feature>
元素宣告"android.hardware.faketouch"
。這樣一來,您的應用程式就能在最多種類的裝置上運作,包括只提供模擬觸控螢幕輸入功能的裝置。所有搭載觸控螢幕的裝置也支援
"android.hardware.faketouch"
,因為觸控螢幕功能是 faketouch 功能的超集。除非您確實需要 如果是觸控螢幕,請新增<uses-feature>
建立 Dake 元件
新權限
"android.permission.BIND_REMOTEVIEWS"
必須在
<service>
資訊清單中宣告為必要權限 實作RemoteViewsService
的元素。舉例來說,如果您建立的 App Widget 會使用RemoteViewsService
填入集合檢視畫面,資訊清單項目可能會如下所示:<service android:name=".widget.WidgetService" android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS" />
新平台技術
- 儲存空間
- ext4 檔案系統支援,可啟用內建 eMMC 儲存體。
- FUSE 檔案系統,用於支援 MTP 裝置。
- 支援 USB 主機模式,支援鍵盤和 USB 集線器。
- 支援 MTP/PTP
- Linux 核心
- 已升級至 2.6.36
- Dalvik VM
- 支援 SMP 並為其進行最佳化的新程式碼
- 對 JIT 基礎架構做出多項改善
- 垃圾收集器改善項目:
- 為 SMP 進行調整
- 支援較大的堆積大小
- 統一處理點陣圖和位元組緩衝區
- Dalvik 核心程式庫
- 更快速的全新 NIO 實作 (新型 I/O 程式庫)
- 改善例外狀況訊息
- 修正各項功能的正確性和效能
API 差異報表
如需 Android 3.0 (API 級別) 中所有 API 變更的詳細資料 11),請參閱 API 差異報告。
API 級別
Android 3.0 平台提供 架構 APIAndroid 3.0 API 會指派一個整數 ID 11,也就是 儲存於系統本身這個 ID 稱為「API 級別」,可讓系統在安裝應用程式前,正確判斷應用程式是否與系統相容。
如要在應用程式中使用 Android 3.0 中推出的 API,您必須針對 Android 3.0 SDK 平台中提供的 Android 程式庫編譯應用程式。根據您的需求
需要新增android:minSdkVersion="11"
屬性設為應用程式所用 <uses-sdk>
元素中的
資訊清單。如果您的應用程式設計為僅支援 Android 2.3 以上版本,
宣告該屬性會使應用程式無法提早安裝
每個 Pod 都有一個專屬版本
詳情請參閱「什麼是 API 級別?」。