歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android Launcher開發之LiveFolder(實時文件夾) 完全解析

Android Launcher開發之LiveFolder(實時文件夾) 完全解析

日期:2017/3/1 10:13:28   编辑:Linux編程

實時文件夾概述:

實時文件夾是在SDK1.5中引入的,支持開發人員在設備的默認打開屏幕(我們將其稱為設備的主頁)上公開 ContentProvider,如聯系人信息、筆記和媒體。將ContentProvider(比如Android的 contactsContentProvider)在主頁上公開為活動文件夾之後,在聯系人數據庫中添加、刪除或修改聯系人時,此實時文件夾能夠刷新自身所包含的內容。

Android中的實時文件夾對ContentProvider的作用就相當於RSS閱讀器對發布網站的作用。ContentProvider也是類似於根據URI提供信息的網站。隨著網站的迅速增加,每個網站都會以獨特的方式發布自己的信息,這就需要集中多個網站的信息,以便用戶可以通過單一閱讀器了解最新發展動態。為此,RSS應運而生。RSS強制在不同的信息集之間提供一種通用的使用模式。有了通用模式,你只需設計一次閱讀器,就可以使用它閱讀任何內容,只要該內容具有統一的結構即可。

實時文件夾在概念上也沒有什麼不同。就像 RSS閱讀器為所發布的網站內容提桶通用的接口一樣,實時文件夾也為Android中的 ContentProvider定義一種通用接口。只要 ContentProvider遵守此協議,Android就能夠在設備的主頁上創建活動文件夾圖標來表示該 ContentProvider。當用戶單擊此活動文件夾圖標時,系統將聯系 ContentProvider。ContentProvider 應該會返回一個游標。根據活動文件夾契約,此游標必須具有一組預定義的列。此游標通過 ListView 或 GridView直觀地顯示出來。

android實時文件夾 android LiveFolder, 為什麼說它是實時的,因為它可以根據我們後台數據庫的變化更新自身 更新UI 這樣無論什麼時候顯示的內容都是最新的。 比如 我們刪除了一條聯系人信息,我們的 Live Foler馬上也會 更新。是馬上 而且你也不用做任何操作 它自己會更新

用戶如何使用活動文件夾:

(1) 打開android模擬器 來到主頁 (默認屏幕)

(2) 轉到主頁的上下文菜單。通過在主頁的空白處進行長單擊(按住不撒手 大約2秒鐘),就可以看到上下文菜單了。

(3) 找到一個名為 Folders(中文名就叫文件夾) 的上下文菜單選項,單擊可以查看可能可用的活動文件夾。

(4) 從列表中選擇並單擊希望在主頁上公開的活動文件夾名稱。這會在主頁上創建一個圖標來表示所選的活動文件夾。

(5) 單擊在第4步中設置的活動文件夾圖標,調出 ListView或GridView中的信息(該活動文件夾表示的數據)行。

(6) 單擊一行以調用知道如何顯示該行數據的應用程序。

(7) 使用該應用程序顯示的更多菜單選項查看或操作目標選項。也可以使用應用程序的菜單選項創建它支持的任何新項。

(8) 請注意,活動文件夾顯示區域會自動反應對一個或多個項所做的更改。


Eg:



通過代碼構建實時文件夾(LiveFolder):


要構建活動文件夾,需要兩樣東西:一個活動和一個專門的ContentProvider。Android使用此活動的 “ 標簽” 來填充可用活動文件夾列表。Android還調用此活動來獲得一個URI,這個URI將被調用來顯示一組行。

活動提供的URI 應該指向負責返回行的專門的ContentProvider。該ContentProvider通過一個定義良好的游標返回這些行。我們要求游標 “定義良好”, 因為游標應該具有一組已知的預定義列名稱。

Eg:

1. AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="xiaohang.zhimeng" android:versionCode="1" android:versionName="1.0">
  4. <uses-sdk android:minSdkVersion="10" />
  5. <application android:icon="@drawable/icon" android:label="@string/app_name">
  6. <activity android:name=".SimpleActivity" android:label="@string/app_name">
  7. <intent-filter>
  8. <action android:name="android.intent.action.MAIN" />
  9. <category android:name="android.intent.category.LAUNCHER" />
  10. </intent-filter>
  11. </activity>
  12. <!-- LIVE FOLDERS -->
  13. <activity android:name=".AllContactsLiveFolderCreatorActivity"
  14. android:label="My live folder" android:icon="@drawable/contacts">
  15. <intent-filter>
  16. <SPAN style="COLOR: #ff0000"><action android:name="android.intent.action.CREATE_LIVE_FOLDER" /></SPAN>
  17. <category android:name="android.intent.category.DEFAULT" />
  18. </intent-filter>
  19. </activity>
  20. <provider android:authorities="com.ai.livefolders.contacts"
  21. android:multiprocess="true" android:name=".MyContactsProvider" />
  22. </application>
  23. <SPAN style="COLOR: #ff0000"><uses-permission android:name="android.permission.READ_CONTACTS" /></SPAN>
  24. </manifest>
Copyright © Linux教程網 All Rights Reserved