欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android30_AppWidget使用(一)

程序员文章站 2024-02-26 19:32:22
...

 

一、App Widget定义

       App WidgetApplication Widget的缩写,特指在android手机桌面上放置的控件。比如时钟等。另外,App Widget和我们自己写的程序并不是运行在同一进程当中的。在桌面长按就可以向桌面添加各种控件:


Android30_AppWidget使用(一)

 

 

二、App Widget相关的基本概念

       1.AppWidgetProviderInfo对象:为App Widget提供元数据,包括布局,更新频率等数据,该对象定义在XML文件当中。

       2.AppWidgetProvider:定义了App Widget的基本声明周期函数。

 

三、创建一个App Widget的步骤

 

Android30_AppWidget使用(一)


        1.定义AppWidgetProviderInfo

              res/xml文件夹中定义一个名为appwidger_info.xml的文件:

              android:initialLayout:初始化布局文件

              android:updatePeriodMillis:更新时间

 

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

        2.AppWidget指定样式和布局:

              Res/layout文件夹下定义一个新的布局文件appwidget.xml,里面可以添加一些控件,用于控制在桌面显示的样式,给AppWidgetProviderInfo这个对象提供数据。其中image是一张小鸟的png图片。

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ImageButton 
	android:id="@+id/widgetTextId"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/image"
    android:background="#00000000"/>
</LinearLayout>

        3.实现AppWidgetProvider

              onUpdate:在到达指定的更新时间之后或者当用户想桌面添加AppWidget时会调用该方法;

              onDeleted:当App Widget被删除时,会调用该方法;

              onEnabled:当一个AppWidget的实例第一次被创建时,会调用该方法;

              onDisabled:当最后一个App Widget实例被删除后,会调用;

              onReceive:接收广播事件。请求分发。

 

package com.android.activity;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
public class AppWidgetProviderTest extends AppWidgetProvider{
	@Override
	public void onUpdate(Context context, AppWidgetManager 
			appWidgetManager, int[] appWidgetIds) {
		System.out.println("AppWidgetProvider --> onUpdate");
		super.onUpdate(context, appWidgetManager, appWidgetIds);
	}
	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		System.out.println("AppWidgetProvider --> onDeleted");
		super.onDeleted(context, appWidgetIds);
	}
	@Override
	public void onDisabled(Context context) {
		System.out.println("AppWidgetProvider --> onDisabled");
		super.onDisabled(context);
	}
	@Override
	public void onEnabled(Context context) {
		System.out.println("AppWidgetProvider --> onEnabled");
		super.onEnabled(context);
	}
}

 运行结果:


Android30_AppWidget使用(一)
 添加后的结果:


Android30_AppWidget使用(一)