Android桌面小插件开发一

来源:互联网 发布:centos安装java sdk 编辑:程序博客网 时间:2024/04/30 18:42

转载自:http://www.eoeandroid.com/thread-71208-1-1.html


       应用程序窗口小部件App Widgets
  应用程序窗口小部件(Widget)是微小的应用程序视图,可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget provider来发布一个Widget。可以容纳其它App Widget的应用程序组件被称为App Widget宿主。

  基础知识The Basics

  为了创建一个App Widget,你需要下面这些:

  AppWidgetProviderInfo 对象

  描述一个App Widget元数据,比如App Widget的布局,更新频率,以及AppWidgetProvider 类。这应该在XML里定义。

  AppWidgetProvider 类的实现

  定义基本方法以允许你编程来和App Widget连接,这基于广播事件。通过它,当这个App Widget被更新,启用,禁用和删除的时候,你都将接收到广播通知。

  视图布局
  为这个App Widget定义初始布局,在XML中。
  另外,你可以实现一个App Widget配置活动。这是一个可选的活动Activity,当用户添加App Widget时加载并允许他在创建时来修改App Widget的设置。

  下面的章节描述了如何建立这些组件:
  在清单中声明一个应用小部件
  首先,在应用程序AndroidManifest.xml文件中声明AppWidgetProvider 类,比如:

Java代码:

[java] view plaincopy
  1. < receiver android:name="ExampleAppWidgetProvider" >  
  2. < intent-filter>  
  3. < action android:name="android.appwidget.action.APPWIDGET_UPDATE" />  
  4. < /intent-filter>  
  5. < meta-data   
  6. android:name="android.appwidget.provider"  
  7. android:resource="@xml/example_appwidget_info < src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" type="text/javascript"> < srcsrc="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" type="text/javascript"> " />  
  8.   
  9. < /receiver>  

      < receiver>元素需要android:name属性,它指定了App Widget使用的AppWidgetProvider 。

  < intent-filter> 元素必须包括一个含有android:name属性的< action>元素。该元素指定AppWidgetProvider接受 ACTION_APPWIDGET_UPDATE 广播。这是唯一你必须显式声明的广播。当需要的时候,AppWidgetManager 会自动发送所有其他App Widget广播给AppWidgetProvider。

       < meta-data> 元素指定了AppWidgetProviderInfo 资源并需要以下属性:
  
       android:name ? 指定元数据名称。
  android:resource ? 指定AppWidgetProviderInfo 资源路径。

  增加AppWidgetProviderInfo元数据
  AppWidgetProviderInfo定义一个App Widget的基本特性,比如最小布局尺寸,初始布局资源,刷新频率,以及(可选的)创建时加载的一个配置活动。使用单独的一个< appwidget-provider>元素在XML资源里定义AppWidgetProviderInfo 对象并保存到项目的res/xml/目录下。

Java代码:

[java] view plaincopy
  1. < appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
  2. android:minWidth="294dp"   
  3. android:minHeight="72dp"  
  4. android:updatePeriodMillis="86400000"   
  5. android:initialLayout="@layout/example_appwidget"  
  6. android:configure="com.example.android.ExampleAppWidgetConfigure" >  
  7. < /appwidget-provider>  

       下面是< appwidget-provider>属性的总结:

  minWidth 和minHeight 属性的值指定了这个App Widget布局需要的最小区域。
  缺省的App Widgets所在窗口的桌面位置基于有确切高度和宽度的单元网格。如果App Widget的最小长宽和这些网格单元的尺寸不匹配,那么这个App Widget将收缩到最接近的单元尺寸。(参见App Widget Design Guidelines 以获取更多关于桌面单元尺寸的信息)

  因为桌面布局方向(由此,单元的尺寸)可以变化,按照拇指规则,你应该假设最坏情况单元尺寸是74像素高和宽。不过,你必须从最后的尺寸中减去2以把像素计算过程中产生的任何的整数舍入误差考虑在内。要找到像素密度无关的最小宽度和高度,使用这个公式:
  (number of cells * 74) - 2

       遵循这个公式,你应该使用72dp为每一个单元高度,294dp为四个单元宽度。

       updatePerdiodMillis 属性定义了App Widget框架调用onUpdate()方法来从AppWidgetProvider请求一次更新的频度。实际更新时间并不那么精确,而且我们建议更新频率越低越好-也许每小时不超过一次以节省电源。你也许还会允许用户在配置中调整这个频率-一些人可能想每15分钟一次股票报价,或者一天只要四次。

  initialLayout属性指向定义App Widget布局的资源。

  configure属性定义了Activity ,当用户添加App Widget时启动,以为他或她配置App Widget特性。这是可选的(阅读下面的Creating an App Widget Configuration Activity)。

  参见AppWidgetProviderInfo 类以获取更多可以被< appwidget-provider>元素接受的属性信息。