Android Launcher开发之LiveFolder(实时文件夹) 完全解析

实时文件夹概述:

实时文件夹是在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:

Android Launcher开发之LiveFolder(实时文件夹) 完全解析



通过代码构建实时文件夹(LiveFolder):


要构建活动文件夹,需要两样东西:一个活动和一个专门的ContentProvider。Android使用此活动的 “ 标签” 来填充可用活动文件夹列表。Android还调用此活动来获得一个URI,这个URI将被调用来显示一组行。

  活动提供的URI 应该指向负责返回行的专门的ContentProvider。该ContentProvider通过一个定义良好的游标返回这些行。我们要求游标 “定义良好”, 因为游标应该具有一组已知的预定义列名称。

Eg:

1. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>   <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="xiaohang.zhimeng" android:versionCode="1" android:versionName="1.0">       <uses-sdk android:minSdkVersion="10" />       <application android:icon="@drawable/icon" android:label="@string/app_name">           <activity android:name=".SimpleActivity" android:label="@string/app_name">               <intent-filter>                   <action android:name="android.intent.action.MAIN" />                   <category android:name="android.intent.category.LAUNCHER" />               </intent-filter>           </activity>           <!-- LIVE FOLDERS -->           <activity android:name=".AllContactsLiveFolderCreatorActivity"               android:label="My live folder" android:icon="@drawable/contacts">               <intent-filter>                   <SPAN style="COLOR: #ff0000"><action android:name="android.intent.action.CREATE_LIVE_FOLDER" /></SPAN>                   <category android:name="android.intent.category.DEFAULT" />               </intent-filter>           </activity>           <provider android:authorities="com.ai.livefolders.contacts"               android:multiprocess="true" android:name=".MyContactsProvider" />       </application>       <SPAN style="COLOR: #ff0000"><uses-permission android:name="android.permission.READ_CONTACTS" /></SPAN>   </manifest>  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f8645387b9acdb3b29783bed343d30da.html