`
Jason_gang
  • 浏览: 16717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
一个最简单的AppWidge例子


          AppWidge组件是Android手机Home界面小应用程序,我们先来体验一下如何开发一个显示当前时间的appwidget。这个appwidget每秒刷新一次,显示时、分和 秒。这个appwidget的效果如图1所示。






步骤1:实现appwidget的layout

  在android上编程的人都知道,android的界面离不开layout,appwidget也不例外。建立appwidget layout的方式与建立其他layout的方式相同。在res\layout目录中建立一个firstappwidget.xml文件,代码如下:


<?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">
    <TextView android:id="@+id/tvMsg" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:textSize="20dp"
        android:textColor="#F00" />
</LinearLayout>

    tvMsg用于显示applwidget中的文字,也就是类似“当前时间:03:34:34”的字符串。

步骤2:编写AppWidgetProvider类

    appwidget需要一个AppWidgetProvider类的子类,该类的代码如下:

package net.blogjava.nokiaguy.appwidget;

import java.util.Date;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.widget.RemoteViews;

public class MyAppWidgetProvider extends AppWidgetProvider
{
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds)
    {
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++)
        {
            int appWidgetId = appWidgetIds[i];
            RemoteViews views = new RemoteViews(context.getPackageName(),
                    R.layout.firstappwidget);   
            java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss");
            views.setTextViewText(R.id.tvMsg, "当前时间:" + df.format(new Date()));           
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }       
    }
}

    当创建每一个appwidget的实例时AppWidgetManager都会调用该appwidget的onUpdate方法。要想使更新有效,必须调用updateAppWidget方法更新相应的appwidget中的view。

步骤3:配置<appwidget-provider>元素

    appwidget还需要一个<appwidget-provider>元素来描述appwidget的大小、布局、更新频率等信息。在 res目录下建立一个xml目录,在res\xml目录下建立一个appwidget_provider.xml,并输入如下的代码:

<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="200dp"
    android:minHeight="30dp"
    android:updatePeriodMillis="1000"
    android:initialLayout="@layout/timeappwidget"/>

     其中android:minWidth和android:minHeight表示appwidget的最小宽度和高 度,android:updatePeriodMillis表示更新频率,单位是毫秒。也就是说,AppWidgetManager每秒都会调用该 appwidget的onUpdate方法。因此,onUpdate方法在两种情况下被调用,第一种是添加appwidget时,第二种是每一个更新周期 结束时调用一次onUpdate方法。


步骤4:进行最后的配置

    appwidget需要在appwidget_provider.xml文件中配置receiver,从这一点可以看出,android是通过 Broadcast来通知每一个appwidget的。appwidget_provider.xml文件的配置代码如下:

在<application>与</application>之间加入。

        <receiver  android:name="com.peidw.widget.TimeAppWidgetProvider">
         <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_provider" />
    <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
  
        </receiver>

在</manifest>节点前添加

    <uses-sdk android:minSdkVersion="3" />

在上面的配置代码中使用<intent-filter>元素的<action>子元素来指定appwidget接收的动作。使用<meta-data>元素指定appwidget的layout。

    将这个程序安装在android模拟器中,我们会发现appwidget并没有出现。实际上,appwidget需要手工去添加。通过模拟器的menu, 进入“添加”列表,选择“widgets”,我们就会找到本文实现的appwidget。

通过这这个例子,终于可以在我的程序中增加AppWidge功能。

分享到:
评论

相关推荐

    appWidget启动Activity

    在Android开发中,`appWidget` 是一种可以在用户主屏幕上显示的小部件,它提供了一种无需打开应用程序就能与用户交互的方式。本篇文章将深入探讨如何使用`appWidget`来启动一个`Activity`。 首先,我们需要了解`app...

    appWidget启动Service

    在Android开发中,AppWidget是桌面小部件,它允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用。Service是Android系统中的一个组件,它可以在后台长时间运行,执行一些耗时的操作,如音乐播放、数据同步等...

    Qt界面 获取widget位置大小并与其他widget切换位置大小

    在Qt编程中,Widget是构建用户界面的基本元素,如按钮、文本框等。"Qt界面获取Widget位置大小并与其他Widget切换位置大小"这个主题涉及到如何动态地改变和管理Widget的位置和尺寸,以及如何通过交互来实现它们之间的...

    Android的widget使用listview布局

    在Android开发中,Widget是应用在主屏幕上的小型UI组件,它们可以提供用户与应用程序的交互,无需打开应用本身。ListView是一种常用的布局管理器,它允许用户在一个滚动列表中显示大量数据。本教程将深入探讨如何在...

    Qt5以上动态添加子widget

    在Qt框架中,动态添加子Widget是一项常见的任务,特别是在创建可扩展或自适应用户界面时。Qt5及以上版本提供了丰富的API来实现这一功能。本文将深入探讨如何在Qt5及更高版本中动态地向父Widget添加子Widget,以及...

    Android桌面插件-时钟widget

    本主题聚焦于"Android桌面插件-时钟widget",这是一个非常实用且常见的组件,它能为用户提供即时的时间显示,甚至支持多时区时间查看。 时钟Widget是Android系统中的一个核心组件,开发者可以通过自定义实现来提供...

    android安卓app开发之widget界面控件使用教程.zip

    【Android 安卓 App Widget 界面控件使用教程】 Android 安卓系统提供了一种称为 App Widget 的功能,这是一类特殊的用户界面组件,可以让应用程序的部分功能直接出现在用户的主屏幕上,无需打开应用就能进行交互。...

    android axure widget包

    对于Android开发者来说,使用Axure制作Widget原型可以帮助他们在设计阶段更好地理解和规划应用界面。这个“android axure widget包”就是一组专门针对Android平台的Axure组件库,由用户自己制作并分享。 标题中的...

    Widget

    Widget在IT领域中通常指的是GUI(图形用户界面)中的一个小部件或者组件,它是一个可交互的元素,如按钮、滑块、复选框、单选按钮、文本框等。Widgets是构建用户界面的基础,允许用户与应用程序进行交互,执行各种...

    widget现状分析报告(移动widget)

    【标题】:移动Widget现状分析报告 【摘要】: 移动Widget是互联网技术发展下的产物,是一种小型的应用程序,可在各种平台上展示个性化信息。本报告旨在分析当前移动Widget的市场状况,探讨其起源和发展历程,以及...

    用WidgetConfig防止Android Widget中Application的重复添加

    在Android开发中,WidgetConfig是用于管理Android小部件(Widget)配置的一种机制,它可以帮助开发者避免在添加Widget到用户桌面时出现Application实例的重复创建。本文将深入探讨如何使用WidgetConfig来解决这个...

    appwidget时间每秒刷新一次

    在Android平台上,AppWidget是小部件的简称,它允许开发者创建可以放置在用户主屏幕上的小型应用程序。在本例中,我们关注的是一个特定类型的AppWidget,它显示时间并每秒更新一次。创建这样一个实时更新的时钟App...

    android之appwidget(二)启动新activity

    在Android开发中,AppWidget是桌面小部件,它允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用。在本篇博文中,我们将深入探讨如何在AppWidget中启动一个新的Activity,这通常是为了提供更丰富的用户体验...

    QT界面旋转切换Widget

    "QT界面旋转切换Widget"是QT框架下实现的一种创新交互方式,它允许用户通过旋转效果在不同的界面或Widget之间进行平滑切换,提升了用户体验。 在QT中,Widget是构成用户界面的基本元素,它可以是按钮、文本框、标签...

    widget 介绍:比较全面介绍widget由来的资料

    【Widget的介绍与详解】 Widget,这个词源自英语,是一个通用术语,用来描述各种小型应用程序或组件,它们可以在不同平台上以小窗口或小框的形式呈现,为用户提供便捷的功能或信息展示。Widget广泛应用于网页、系统...

    android appwidget全面解析

    在深入探讨Android AppWidget之前,我们首先需要理解AppWidget在Android生态中的角色和价值。AppWidget,即桌面小部件,是Android系统提供的一种允许应用程序在主屏幕放置动态更新的组件,用户无需打开完整应用即可...

    Widget 闹钟android实现

    在Android平台上,Widget是应用程序的一种轻量级交互方式,它可以在主屏幕上显示实时信息并提供简单操作,无需打开完整的应用程序。本教程将深入探讨如何在Android中实现一个Widget闹钟功能,这对于Android开发者来...

    安卓Widget小组件相关-androidWidget小组件开发.zip

    在Android平台上,Widget小组件是应用在主屏幕上提供快速访问或简单交互的一种方式。它们可以显示实时信息,比如天气、时钟或者新闻摘要,而无需用户打开完整的应用程序。本资料包"androidWidget小组件开发.zip"包含...

    android Launcher添加widget源码

    6. **向Launcher注册Widget**:在用户选择添加Widget时,Launcher会调用AppWidgetManager的`addAppWidget()`方法,传入Widget提供者的ComponentName和待分配的AppWidgetId。 接下来,我们重点关注"JYCLauncher"这个...

Global site tag (gtag.js) - Google Analytics