Android特色开发(4):桌面组件

时间:2024-03-11 18:43:48

第一次启动Android模拟器时,可以看到在桌面上有很多图标,如图9-18所示的Google搜索框、时钟、联系人、浏览器等,点击这些图标,系统就会执行相应的程序,与PC操作系统桌面上的快捷方式很像,但是它不完全是快捷方式,还包括了实时文件夹(Live Folder)和桌面插件(Widget),这样既美观又方便用户操作。本节将学习这每一种桌面组件的开发,让我们自己的应用程序也能轻松地放置到桌面上。

图9-18 Android桌面组件

快捷方式

首先我们学习最基本的桌面组件快捷方式,它和PC上的快捷方式一样,用于启动某一应用程序的某个组件(如Activity、Service等)。其实要在桌面上添加一个快捷方式很简单,只需要长按桌面或者点击“Menu”按键(如图9-19所示),就可以弹出添加桌面组件的选项,如图9-20所示,“Shortcuts”为添加快捷方式,“Widgets”为Widget开发的桌面插件,“Folders”为实时文件夹,进入相应的选项后即可添加相应的桌面组件。

       图9-19  Menu菜单                                  图9-20  添加桌面组件

本小节重点介绍在应用程序中通过代码来将一个应用程序添加到图9-20的Shortcuts列表中,这里添加一个发送邮件的应用到快捷方式列表上去。

首先需要在Activity注册时添加一个Action为android.intent.action.CREATE_SHORTCUT的IntentFilter,添加之后列表中就会出现该应用的图标和名字了。

接下来还要为快捷方式设置名字、图标、事件等属性。Intent.EXTRA_SHORTCUT_NAME对应快捷方式的名字;Intent.EXTRA_SHORTCUT_ICON_RESOURCE对应快捷方式的图标;Intent. EXTRA_SHORTCUT_INTENT对应快捷方式执行的事件。需要说明的是,Android专门提供了Intent.ShortcutIconResource.fromContext来创建快捷方式的图标,最后通过setResult来返回,构建一个快捷方式。

启动模拟器后,就可以在Shortcuts列表中找到所添加的快捷方式,将其添加到桌面。

实时文件夹

在Android 1.5中,Live Folders无疑是一个备受关注的新功能。简单地说,Live Folders就是一个查看你的手机中所有电子书、电子邮件、rss订阅、播放列表的快捷方式,并且这些内容是实时更新的。比如你不再需要单独打开电子邮件软件查看邮件,打开通讯录找联系人等。Live Folders自带了列出所有联系人、所有有电话号码的联系人以及Starred联系人的功能,我们还可以使用Live Folders API开发出更多的新颖应用。

由于Live Folders本身不存储任何信息,都是以映射的方式查看其ContentProvider所指向的数据信息,并可以自定义显示格式,所以当源数据发生改变后,Live Folders可以实时更新显示内容。那么在开发时,我们要确保所指定数据信息URI的ContentProvider支持实时文件夹的查询。

其添加方式和添加快捷方式一样,只是在选择时要选择“Folders”。本小节我们通过Live Folders调用电话本中的信息,当点击其中一条信息时,便执行呼叫该联系人的动作。

和创建快捷方式一样,我们需要在Activity注册时添加一个Action动作为android.intent.action. CREATE_LIVE_FOLDER的IntentFilter。

我们需要在程序中设置该实时文件夹的数据源、图标、名字的信息。可以通过intent.setData方法来设置要读取的数据源,该例中我们设置数据源为“content://contacts/live_folders/people”,即联系人信息。其他信息的设置如表9-2所示。

表9-2  Live Folders的常用属性

在设置图标时,Android专门提供了Intent.ShortcutIconResource.fromContext来设置实时文件夹的图标。下面我们将实时文件夹添加到桌面(如图9-22所示),运行效果如图9-23所示。

                                  

                 图9-22 “电话本”实时文件夹                                                    图9-23  实时文件夹运行效果

下面需要在onCreate方法中将实时文件夹的相关信息装入Intent对象,并通过setResult方法设置为结果Intent,最后调用finish方法结束Activity,把结果返回给Home应用程序,以添加实时文件夹。

Widget开发

Widget是一种很小的应用程序,主要作为Web 2.0服务或互联网内容的前端。Web设计人员与开发者可以使用Widget来创造最受欢迎的互联网体验。在Android 1.5中加入了AppWidget framework框架,开发者可以使用该框架开发Widget,这些Widget可以拖到用户的桌面并且可以交互。Widget可以提供一个full-featured apps的预览,例如可以显示即将到来的日历事件,或者一首后台播放的歌曲的详细信息。当Widget被拖到桌面上时,指定一个保留的空间来显示应用提供的自定义内容。用户可以通过这个Widget来和应用交互,例如暂停或切换歌曲。如果你有一个后台服务,可以按照你自己的Schedule更新你的Widget,或者使用AppWidget framework提供一个自动的更新机制。

每个Widget就是一个BroadcastReceiver,它们用XML metadata来描述Widget的细节。AppWidget framework通过Broadcast intents和Widget通信, Widget的更新使用RemoteViews来发送。RemoteViews被包装成一个layout和特定内容来显示到桌面上。下面我们通过一个示例来学习Widget开发。

下面将该Widget添加到桌面上,和添加快捷方式一样,如图9-24所示,然后输入要显示的文字,如图9-25所示,点击“确定”按钮之后,桌面即显示我们输入的信息,如图9-26所示。

                               

图9-24 添加Widget到桌面                  图9-25 输入要显示的信息                              图9-26  桌面显示Widget

 

Widget(小部件),是一种小巧的工具,一般是某个应用的微缩版或者某个应用程序的快速入口,widget可以被嵌入到具有容纳widget属性的视图中(通常是桌面)。最常见的小部件就是数字时钟。

Widget的用途一般分为3类:

1、提醒和通知    

2、控制后台服务

3、作为程序的快速入口。

         系统内置了WidgetManagerwidget管理器),它是一种系统服务,可以通过管理器定期向widget对象发送消息,通知widget对象更新内容。

         Widget对象由3部分组成:

         1、界面视图:和activity界面类似,可由xml文件类描述。

         2、属性描述:如告知管理器,每隔多长时间收到一次通知提醒,用于widget更新自身内容。属性可以用xml描述,也可有AppWidgetInfo来创建和访问。

         3、数据处理AppWidgetProvider类:该类实质是个Receiver,因此,从这个角度看,AppWidgetManager是个发送广播的系统服务,AppWidgetProvider是个接收器。

Widget 实现需要4步:1、在res/layout建立界面布局xml文件;2、在res/xml建立属性描述xml文件,并和布局文件关联;3、建立AppWidgetProvider对象;4、在AndroidManifest.xml文件中声明widget,并和属性描述文件关联。

 

具体代码下载链接: http://www.apkbus.com/android-117722-1-1.html

 

喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你值得拥有哦!