AppWidgetApplicationWidget)的实现步骤:

a、创建AppWidgetProvider对象,通过使用XML(appwidgetinfo.xml)来定义:

<?xml version="1.0" encoding="utf-8"?><appwidget-provider  xmlns:android="http://schemas.android.com/apk/res/android"  android:minWidth="294dp"  android:minHeight="72dp"  android:updatePeriodMillis="86400000"  android:initialLayout="@layout/awl"  >  </appwidget-provider>

定义了AppWidget的最小宽度、最小高度、更新周期和AppWidget的初始布局。

其中AppWidget的初始布局文件(awl.xml)为如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical">  <TextView android:id="@+id/tv"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:text="test"/>  <Button android:id="@+id/btn"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:text="click"/></LinearLayout>

b、实现AppWidgetProvider类(AWTProvider.java):

package yc.yc;import android.app.PendingIntent;import android.appwidget.AppWidgetManager;import android.appwidget.AppWidgetProvider;import android.content.Context;import android.content.Intent;import android.widget.RemoteViews;public class AWTProvider extends AppWidgetProvider {//每当一个AppWidget被删除,就会调用onDeleted方法。@Overridepublic void onDeleted(Context context, int[] appWidgetIds) {System.out.println("delete");super.onDeleted(context, appWidgetIds);}//当最后一个AppWidget被删除,就会调用onDisabled方法。//在此方法中一般情况下执行一些AppWidget的结束性操作,如删除一个临时数据库等操作。@Overridepublic void onDisabled(Context context) {System.out.println("disable");super.onDisabled(context);}//当第一个AppWidget实例被创建是,就会调用onEnabled方法。//在此方法中一般情况下执行一些AppWidget的初始化的工作,如新建一个数据库或者一些操作等。@Overridepublic void onEnabled(Context context) {System.out.println("enable");super.onEnabled(context);}//onReceive相当一个经理,当外界来任务了,将任务分发给其下的员工(onEnable,onDeleted,onDisabled,onUpdate)处理@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("receive");super.onReceive(context, intent);}//在这里onUpdate执行的条件有两个:1、到了我们所设定的更新周期了;2、添加一个新的AppWidget。//在onUpdate中一般为控件定义事件处理或者开启一个临时的Service。//这里是为我们的button控件添加点击事件处理//context表示这个接收器正在运行的环境//appWManager表示AppWidget的管理器可通过调用 updateAppWidget(ComponentName, RemoteViews)更改指定AppWidget的控件属性//appWidgetIds表示Appwidget的编号,系统自动生成@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {System.out.println("update");final int N = appWidgetIds.length;              for (int i=0; i<N; i++) {            int appWidgetId = appWidgetIds[i];  System.out.println("appWidgetId="+appWidgetId);           Intent intent = new Intent(context, AWTActivity.class);            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);              RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.awl);            views.setOnClickPendingIntent(R.id.btn, pendingIntent);                      appWidgetManager.updateAppWidget(appWidgetId, views);        }}}

C、在AndroidManifest.xml中注册实现类,并且定义元数据:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="yc.yc"      android:versionCode="1"      android:versionName="1.0">    <uses-sdk android:minSdkVersion="7" />    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".AWTActivity"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <!-- 注册实现类 --><receiver android:name=".AWTProvider"><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE"/></intent-filter><!-- 定义元数据 --><meta-data android:name="android.appwidget.provider"android:resource="@xml/appwidgetinfo"/></receiver>    </application></manifest>


注意:这只是AppWidget的第一讲,还有后续的课程。

更多相关文章

  1. Android中的自定义注解(反射实现-运行时注解)
  2. Android(安卓)用KSOAP2 调用 webservice 传入参数服务器接受不到
  3. Android的嵌入式关系型SQLite数据库使用
  4. Android笔记---使用HttpClient发送POST和GET请求
  5. 关于LayoutInflate和View-infalte的参数意义以及区别总结
  6. 多个Fragment嵌套
  7. android textview在code(代码)中设置图片 和XML设置图片
  8. 通过抢红包插件学习Accessibility Service
  9. Android——自定义AlertDialog

随机推荐

  1. java Android(安卓)回调机制的详解
  2. Android(安卓)Add外部library工程,总是链
  3. TouchPad 可以跑 Android,eBay 上就買得到
  4. Android中直播视频技术探究之---基础知识
  5. 使用xml布局菜单
  6. Android(安卓)一个可以自由定制外观、支
  7. Android(安卓)通过 JNI 调用 Java 类的构
  8. 电脑怎么安装安卓系统?安卓(Android)x86 4
  9. Android指纹识别API讲解
  10. Android电子牌外接USB读卡器读取内容模拟