android桌面widget怎么设置它大小与屏幕同宽啊,理解与应用Android桌面组件AppWidget...

一、概念

首先要区分widget和AppWidget这两个概念。

1、Widget

widget可以直译为小部件,它在Android中代表视图的概念,如TextView、Button、EditText等widget视图控件,及LinearLayout等视图布局。

6903035d10bc3ed82f689a3b5b6c7af1.png

2、AppWidget

AppWidget是放置在手机屏幕的桌面小组件应用,如时钟、日历、天气等组件,与一般应用程序有所不同。一般应用虽也可以以图标的形式(快捷方式)放在桌面,但必须点击运行和查看;而AppWidget一般不须点击即直观呈现其主要内容。当然,AppWidget也可以被设置为点击打开其它屏幕或应用等。

而且,AppWidget可以被定时更新,如日历每天更新,时钟每分钟更新等。当然,也可以在AppWidget的视图界面中加入类似刷新的小按钮,以进行实时更新,如天气预报。

一般在提到Widget部件或Widget程序时,指的是AppWidget;如果说到widget控件,则可能是指视图控件,如Button等。

3、操作

通过在桌面(HomeScreen)中长按,在弹出的对话框中选择AppWidget部件来进行创建;或者在应用程序列表的AppWidget程序列表中选择并长按来创建。同一个AppWidget部件可以在桌面同时创建多个。每新建一个,实际上是生成了一个新的AppWidget实例。

要删除桌面的Widget部件,只需长按并拖动到垃圾箱即可。

二、一个简单的AppWidget应用

1、简单AppWidget组成

一个简单的AppWidget应用只需包括以下部分:

AppWidgetProviderInfo对象:

这个对象为AppWidget提供元数据,包括布局、更新频率等信息,这个对象定义在xml文件中,不需要自己编写,由系统根据XML文件生成。

AppWidgetProvider类:

5c22f2201f22790708d09dc8ac21ea5a.png

如图所示,AppWidgetProvider类,继承自BroadcastReceiver,可以接收并处理广播事件。这个类定义了AppWidget的基本生命周期函数:

onReceive(Context, Intent)   接收广播事件。

onUpdate(Context , AppWidgetManager, int[] appWidgetIds)  到达指定的更新时间或用户向桌面添加widget时调用;实际是接受并处理“android.appwidget.action.APPWIDGET_UPDATE”广播事件。appWidgetIds保存着已创建的各(桌面)AppWidget实例编号。在onUpdate方法中可以依次更新所有实例的界面内容。

onEnabled(Context)  当AppWidget实例第一次被创建时调用

onDeleted(Context, int[] appWidgetIds)  当一个AppWidget实例被删除时调用

onDisabled(Context)  当最后一个AppWidget实例被删除时调用

2、一个简单应用开发

该应用很简单,只是在桌面显示一行文字。

(1)应用的界面布局文件res/layout/appwidget_provider_layout.xml:

4ced8760e143dc2f4993c929aa8b0f85.png

(2)应用的元数据定义文件res/xml/appwidget_provider.xml:

296cebd7d6bb29fd687ea0aedec6d14b.png

(3)Widget实例提供程序SimpleWidgetProvider.java文件:

package com.example.simpleappwidget;

import android.appwidget.AppWidgetManager;

import android.appwidget.AppWidgetProvider;

import android.content.Context;

import android.util.Log;

import android.widget.RemoteViews;

import com.example.simpleappwidget.R;

public class SimpleWidgetProvider extends AppWidgetProvider {

private String TAG = "widgetexample";

你可能感兴趣的:(android桌面widget怎么设置它大小与屏幕同宽啊,理解与应用Android桌面组件AppWidget...)