AppWidget

  以前我们所见的Widget都是以Activity为主体的,但是在Android手机桌面(Home Screen AppWidgets)上的"小玩意"皆是属于桌面上的Android AppWidget。
  类关系:
  java.lang.Object
   ↳ android.content.BroadcastReceiver
     ↳ android.appwidget.AppWidgetProvider
  AppWidget 框架类
    1、AppWidgetProvider :继承自 BroadcastRecevier , 在AppWidget 应用 update、enable、disable 和 delete 时接收通知。其中,onUpdate、onReceive 是最常用到的方法,它们接收更新通知。
    2、 AppWidgetProvderInfo:描述 AppWidget 的大小、更新频率和初始界面等信息,以XML 文件形式存在于应用的 res/xml/目录下。
    3、AppWidgetManger :负责管理 AppWidget ,向 AppwidgetProvider 发送通知。
    4、RemoteViews :一个可以在其他应用进程中运行的类,向 AppWidgetProvider 发送通知。
  生命周期:
  1、onDeleted(Context context, int[] appWidgetIds)删除一个AppWidget时调用
  2、onDisabled(Context context)删除最后一个AppWidget是调用
  3、onEnabled(Context context)AppWidgetProvider实例化时调用
  4、onReceive(Context context, Intent intent)
  注意:因为 AppWidgetProvider 是继承自BroadcastReceiver  所以可以重写 onRecevie 方法,当然必须在后台注册Receiver
  5、onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)向桌面添加一个AppWidget时调用。
  那么如果创建这么一个工程呢?
    1、新建AppWidgetProvderInfo
    2、写一个类继承自AppWidgetProvider
    3、后台注册Receiver
  配置文件说明:
  1. res/xml/appwidgetprovider_info.xml,该文件是AppWidgetProvderInfo对象,用来描述 AppWidget 的大小、更新频率和初始界面等信息。
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:minWidth="72dip"
  android:minHeight="72dip"
  android:updatePeriodMillis="60000"
  android:initialLayout="@layout/appwidget_layout">
</appwidget-provider>

android:initialLayout="@layout/appwidget_layout" 此句为指定桌面组件的布局文件。
  2. appwidget_layout.xml, appWidget的布局文件,也就是显示在homescreen上的remoteviews,你可以根据自己需要配置适当的布局。
<?xml version="1.0" encoding="utf-8"?>
<!-- appWidget的布局文件,也就是显示在homescreen上的remoteviews -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:id="@+id/tv_appwidget"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="WidgetDemo"
    />
</LinearLayout>

你可能感兴趣的:(android)