其实创建一个widget很简单。这里就做了一个简单的demo,作为学习记录。
首先在AndroidManifest.xml中添加如下部分
一个widget其实就是一个receiver
<receiver android:name="WidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter>
<action android:name="org.yangzc.widget.fresh"></action>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_provider"></meta-data>
</receiver>
WidgetProvider.java部分代码如下:
provider需要继承自AppWidgetProvider,这个例子是定时更新widget内容。
package org.yangzc.widget;
import java.util.Calendar;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;
public class WidgetProvider extends AppWidgetProvider {
private String fresh = "org.yangzc.widget.fresh";
private Context context;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
Log.d("d","onUpdate");
// super.onUpdate(context, appWidgetManager, appWidgetIds);
this.context = context;
for(int i=0; i<appWidgetIds.length; i++){
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setTextViewText(R.id.thread, i+":Sdfsdfsdf");
appWidgetManager.updateAppWidget(appWidgetId, views);
}
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setTextViewText(R.id.thread, ":Sdfsdfsdf");
appWidgetManager.updateAppWidget(appWidgetIds[0], views);
new MyThread().start();
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d("d","onReceive");
super.onReceive(context, intent);
String action = intent.getAction();
if(fresh.equals(action)){
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main);
Calendar cal=Calendar.getInstance();
System.out.println(cal.getTime().toLocaleString());
views.setTextViewText(R.id.thread, cal.getTime().toLocaleString());
ComponentName thisWidget = new ComponentName(context,WidgetProvider.class);
AppWidgetManager.getInstance(context).updateAppWidget(thisWidget, views);
}
}
class MyThread extends Thread{
public MyThread(){
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent intent = new Intent(fresh);
context.sendBroadcast(intent);
}
}
}
}
main.xml
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/thread" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
</LinearLayout>
appwidget_provider.xml
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="72px" android:minWidth="72px"
android:updatePeriodMillis="3800000" android:initialLayout="@layout/main">
</appwidget-provider>
分享到:
相关推荐
Eclipse SWT Form开发实例代码是面向Java开发者的一个宝贵资源,主要关注于使用Eclipse插件开发框架中的SWT(Standard Widget Toolkit)来构建图形用户界面(GUI)。SWT是Eclipse提供的一种轻量级的GUI库,它允许...
【Android Widget相关实例源代码】 Android Widget是Android操作系统中一种特殊的应用组件,它可以在用户的主屏幕上展示,并提供简化的交互功能。这些组件通常用于提供快速访问应用的主要功能或显示实时更新的信息...
诺基亚Web Widget开发入门及实例是一份专为开发者准备的详细教程,旨在引导初学者进入诺基亚手机上的Widget应用程序开发领域。Widget是小型、轻量级的应用程序,可以在移动设备的主屏幕上运行,提供快捷的功能访问或...
本示例代码主要探讨的是如何创建一个音乐播放器的Widget。 在Android开发中,创建一个Widget首先需要在`AndroidManifest.xml`文件中声明一个新的`<receiver>`标签,指定其为`AppWidgetProvider`类型,并赋予唯一的...
# Android Widget开发代码示例详细说明 ## 一、概览 在Android系统中,Widget是一种可以在用户桌面上提供快捷操作或显示应用相关信息的小部件。它们可以被看作是应用程序的一部分,但通常独立于主应用运行。Widget...
这个“Android手机编程实例源码:Widget源代码”压缩包包含了一系列关于Android Widget开发的实践示例,对于学习和理解如何创建自定义Widget具有极高的价值。 首先,Android Widget主要由AppWidgetProvider、布局...
在Android平台上,AppWidget是Android系统提供的一种小部件功能,允许开发者创建可以在用户主屏幕上显示的小应用程序。AppWidgets虽然小巧,但能为用户提供便捷...理解这些基础知识对于开发Android AppWidget至关重要。
这篇博文(原链接:https://contentprovider.iteye.com/blog/962386)详细介绍了Android中的Widget开发,通过具体的代码示例来讲解如何构建一个功能齐全的Widget。虽然描述中没有给出具体细节,但我们可以推断博主...
android widget 开发实例 : 桌面便签程序的实现详解和源码。本资源为源代码部分,讲解部分见本人blog: http://blog.csdn.net/silenceburn/archive/2010/12/23/6093074.aspx
6. **动态加载子窗口**:在点击事件处理函数中,根据节点信息实例化对应的子窗口类,然后将其添加到QSplitter中。使用QSplitter的`addWidget()`方法实现这一点。 7. **界面与逻辑分离**:为了使代码更易于维护,将...
在这个“android widget实例下载”中,我们可以深入理解Android小部件的开发过程,并在Android SDK版本2.2及以上环境中进行实践。 1. **Android Widget基础** - **定义**:Android小部件是轻量级的UI组件,可以在...
"Android Studio实现简单考试应用程序实例代码详解" Android Studio是Google推出的一个集成开发环境(IDE),它提供了一个功能强大且灵活的开发环境,用于开发Android应用程序。在本文中,我们将介绍如何使用...
在Android开发中,Widget是应用程序界面的一个重要组成部分,它允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用程序。本篇文章将详细讲解如何创建一个`widget实例`,并将其添加到Android应用中。 首先,...
【标题】"Hibernate+Eclipse+C/S开发实例源代码SWT" 涉及到的是一个基于Java编程语言的客户端/服务器(C/S)架构的软件开发案例,利用了Hibernate对象关系映射框架、Eclipse集成开发环境以及SWT(Standard Widget ...
在本文中,我们将深入探讨Laravel开发中的"Widget"概念,以及如何在Laravel框架下创建和使用小部件包装。Laravel是一个优雅且强大的PHP框架,它为开发者提供了丰富的工具和功能,使得Web应用程序的构建变得更为简洁...
实践是检验理论的最好方式,你可以参考《Widget开发:一个简单的例子》和《App Widget学习笔记》来动手编写自己的第一个 App Widget。通过实际操作,你会更加熟悉这个功能强大的桌面扩展机制,从而在你的应用程序中...
在这个“Android ViewPager实例代码介绍2”的文章中,我们将深入探讨如何结合Fragment和ViewPager实现一个具有内容和标题功能的示例。 首先,我们要了解Fragment是Android中的一个模块化组件,它可以在Activity中...