`
iaiai
  • 浏览: 2214378 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Widget开发

阅读更多
把AppWidget添加到桌面后,点击AppWidget后AppWidget文本会轮回改变

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="fill_parent"
	android:id="@+id/layout" android:layout_height="fill_parent">
	<Button android:text="@string/login" android:id="@+id/TextView01"
		android:clickable="true" android:layout_width="wrap_content"
		android:layout_height="wrap_content"></Button>
</LinearLayout>


res/xml/widget.xml布局文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- AppWidgetProvderInfo: 描述AppWidget的大小、更新频率和初始界面等信息,以XML文件形式存在于应用的res/xml/目录下。 
	注意:SDK1.5之后此android:updatePeriodMillis就失效了,要自己创建service更新 -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
	android:minWidth="60dp" android:minHeight="30dp"
	android:updatePeriodMillis="86400000" android:initialLayout="@layout/main">
</appwidget-provider>


AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.iaiai.activity" android:versionCode="1"
	android:versionName="1.0">
	<uses-sdk android:minSdkVersion="8" />
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<!-- <activity android:name="IaiaiActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
			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=".IaiaiWidget" android:label="添加桌面控件">
			<meta-data android:name="android.appwidget.provider"
				android:resource="@xml/widget"></meta-data>
			<intent-filter>
				<action android:name="com.iaiai.widget.click"></action>
				<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
			</intent-filter>
		</receiver>
	</application>
</manifest>  


变量类UtilTool.java:用来控件文本改变:
package com.iaiai.activity;

/**
 * 
 * <p>
 * Title: UtilTool.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-24
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class UtilTool {

	public static boolean isChange = true;

}


IaiaiWidget.java类:
package com.iaiai.activity;

import android.app.PendingIntent;
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;

/**
 * 
 * <p>
 * Title: IaiaiWidget.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-24
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiWidget extends AppWidgetProvider {

	private static final String CLICK_NAME_ACTION = "com.iaiai.widget.click";

	private static RemoteViews rv;

	@Override
	public void onReceive(Context context, Intent intent) {
		super.onReceive(context, intent);

		Log.i("**************", "onReceive");

		if (rv == null) {
			rv = new RemoteViews(context.getPackageName(), R.layout.main);
		}
		if (intent.getAction().equals(CLICK_NAME_ACTION)) {
			if (UtilTool.isChange) {
				rv.setTextViewText(R.id.TextView01, "abc");
			} else {
				rv.setTextViewText(R.id.TextView01, "123");
			}
			UtilTool.isChange = !UtilTool.isChange;
			AppWidgetManager appWidgetManger = AppWidgetManager
					.getInstance(context);
			int[] appIds = appWidgetManger.getAppWidgetIds(new ComponentName(
					context, IaiaiWidget.class));
			appWidgetManger.updateAppWidget(appIds, rv);
		} else {
			super.onReceive(context, intent);
		}
	}

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		Log.i("**************", "onUpdate");
		final int N = appWidgetIds.length;
		for (int i = 0; i < N; i++) {
			int appWidgetId = appWidgetIds[i];
			updateAppWidget(context, appWidgetManager, appWidgetId);
		}
	}

	private void updateAppWidget(Context context,
			AppWidgetManager appWidgeManger, int appWidgetId) {
		rv = new RemoteViews(context.getPackageName(), R.layout.main);
		Intent intentClick = new Intent();
		intentClick.setAction(CLICK_NAME_ACTION);
		PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
				intentClick, 0);
		rv.setOnClickPendingIntent(R.id.TextView01, pendingIntent);
		appWidgeManger.updateAppWidget(appWidgetId, rv);
	}

}


运行结果:

  • 大小: 39.1 KB
  • 大小: 36 KB
分享到:
评论

相关推荐

    android 源码 android Widget开发案例 eclipse项目 直接导入

    这个“android 源码 android Widget开发案例 eclipse项目 直接导入”是一个很好的学习资源,帮助开发者深入理解如何构建和定制Widget。通过Eclipse IDE可以直接导入该项目,快速开始学习。 首先,我们需要了解...

    android widget 开发实例源码

    在Android应用开发中,Widget是桌面小部件,它允许用户在主屏幕上与应用程序进行交互,无需实际打开应用...对于初学者和有经验的开发者来说,这些实例都是宝贵的参考资料,有助于深入理解和掌握Android Widget开发。

    AndroidWidget开发学习教程.pdf

    Android Widget开发学习教程主要涵盖了如何创建和配置一个基本的Widget,包括以下几个关键步骤: 1. **创建AppWidgetProvider子类**: 一个Android Widget的核心是`AppWidgetProvider`类,它是BroadcastReceiver的...

    Android Widget开发代码示例详细说明

    # Android Widget开发代码示例详细说明 ## 一、概览 在Android系统中,Widget是一种可以在用户桌面上提供快捷操作或显示应用相关信息的小部件。它们可以被看作是应用程序的一部分,但通常独立于主应用运行。Widget...

    AndroidWidget开发学习教程[借鉴].pdf

    总的来说,Android Widget开发涉及多个组件和步骤,包括创建AppWidgetProvider、注册Receiver、定义布局和处理数据更新。通过熟练掌握这些知识,开发者可以构建出功能丰富的桌面小部件,为用户提供便捷的服务。

    Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!) ..pdf

    Widget开发不仅能够提升用户对应用的粘性,还能在不打开完整应用的情况下提供有用信息,是Android开发者值得掌握的一项技能。希望本文能为你开启Widget开发的大门,激发你在这一领域的探索与创新。

    Android高手进阶教程(八)之AndroidWidget开发案例(世界杯倒计时!)最新版本

    Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!),主要向大家讲解使用Android Widget如何编写出一款世界杯风格的倒计时程序,教程说出了制作步骤和代码。

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

    本资料包"androidWidget小组件开发.zip"包含了一个名为"MyWidget"的示例项目,可能包含了关于如何创建和实现Android Widget小组件的代码和资源。 1. **Widget组件概述** - Android Widget是Android系统中的一个...

    Android应用源码之android Widget小组件开发.zip

    本示例源码提供了学习Android Widget开发的实战案例,你可以通过阅读和调试代码来加深理解。同时,结合Android官方文档和其他在线教程,将有助于你更好地掌握Widget开发的精髓。 总之,Android Widget小组件开发是...

    Android高级应用源码-android Widget小组件开发.rar

    总的来说,学习和理解Android Widget开发不仅可以提升应用的用户体验,也是Android开发者进阶的必经之路。通过分析这个源码,你将能掌握Widget的设计原则和实践技巧,为你的应用增添更多实用和互动的功能。

    Android应用源码之android Widget小组件开发-IT计算机-毕业设计.zip

    在这个压缩包中,包含了一个完整的Android应用源码,可以作为深入理解Android Widget开发的参考资料。 1. **Android Widget概述** - Android Widget是Android系统提供的桌面小部件,它可以展示应用程序的部分功能...

    Android高手进阶教程之AndroidWidget开发案例世界杯倒计时.pdf

    在Android开发中,Widget是应用于桌面的小部件,它允许用户在主屏幕上直接与应用程序进行交互,而无需打开应用程序本身...在考试或实际工作中,熟练掌握Widget开发能够提升应用的用户体验,增强应用程序的桌面存在感。

    android的widget桌面开关例子

    虽然由于权限限制未能实现完整的功能,但它为我们提供了学习和实践Android Widget开发的一个良好起点。通过深入理解并扩展这个例子,开发者可以创建更多丰富多样的桌面Widget,提升应用的用户体验。

    Android Widget组件开发

    在Android应用开发中,Widget组件是用户界面的一个重要组成部分,它允许开发者将应用程序的功能和信息直接展示在用户的桌面或通知栏上,无需打开应用程序。Widget提供了便捷的方式,让用户可以快速交互,增强了用户...

    android Widget小组件开发源码.zip

    本资源“android Widget小组件开发源码.zip”包含了一份关于Android Widget开发的源代码示例,这对于想要学习或深入了解如何创建自定义Widget的开发者来说是非常有价值的。 1. **Widget基础概念**: - Android ...

    android Widget小组件开发-IT计算机-毕业设计.zip

    这个压缩包"android Widget小组件开发-IT计算机-毕业设计.zip"显然是一个针对Android Widget开发的学习资源,特别适合计算机科学的学生作为毕业设计项目参考。 Android Widget的开发涉及到以下几个核心知识点: 1....

    Android_UI_Widget

    在Android开发中,UI(用户界面)是与用户交互的核心部分,Widget是构成这一界面的重要元素。本主题“Android_UI_Widget”将深入探讨Android中Widget的相关知识,包括它们的种类、功能、使用方法以及如何进行自定义...

Global site tag (gtag.js) - Google Analytics