`

android小部件(widget)小结

阅读更多
一、为widget添加点击事件
在继承自AppWidgetProvider类的onUpdate方法中添加监听并发送点击事件:
		Intent actClick=new Intent("com.zwq.taskMan");
		PendingIntent pending= PendingIntent.getBroadcast(context, 0, actClick, 0);
		RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget);
		rv.setOnClickPendingIntent(R.id.kill_all_image, 
		pending);
appWidgetManager.updateAppWidget(appWidgetIds, rv);

还必须在AndroidManifest.xml的receiver中添加相应的动作:
<action android:name="com.zwq.taskMan"></action>

这样就可以在onReceive方法中通过
if ("com.zwq.taskMan".equals(intent.getAction())) {
}过滤到发送的监听事件了,在这儿可以做相应的事件处理。

二、点击widget时启动一个Activity:
                // Push newly updated widget to surface
				RemoteViews views = PhotoAppWidgetProvider.buildUpdate(this,mAppWidgetId, helper);
				
//				Intent actionIntent=new Intent(INTENT_FLAG);
//				PendingIntent pending= PendingIntent.getBroadcast(this, 0, actionIntent, 0);

				Intent actionIntent = new Intent(PhotoAppWidgetConfigure.this, Photo.class);
				PendingIntent pending = PendingIntent.getActivity(this, 0, actionIntent, 0);
				
				views.setOnClickPendingIntent(R.id.photo, pending);


可以将这个Widget的id传递给该Activity:
Bundle value = new Bundle();
				value.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
				actionIntent.putExtras(value);


三、一个程序显示多个Widget,如果程序需要显示不同尺寸的widget,可以配置多个widget,具体就是要有多个provider,然后在androidmenifist里面配置多个receive:
<receiver android:name=".PhotoProviderTwo" android:label="two">
            <meta-data android:name="android.appwidget.provider"
                    android:resource="@xml/appwidget_info_two"/>
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
        </receiver>
        
        <receiver android:name=".PhotoProviderThree" android:label="three">
            <meta-data android:name="android.appwidget.provider"
                    android:resource="@xml/appwidget_info_three"/>
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
        </receiver>
        
        <receiver android:name=".PhotoProviderFour" android:label="four">
            <meta-data android:name="android.appwidget.provider"
                    android:resource="@xml/appwidget_info_four"/>
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
        </receiver>


四、更新Widget的图片:
只要在AppWidgetProvider的onReceive方法里面写上更新的代码即可:
@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(Common.WIDGET_UPDATE_PHOTO)) {
			Bundle b=intent.getExtras();
			String path=b.getString(Common.CURRENT_PHOTO_PATH);
			RemoteViews views = new RemoteViews(context.getPackageName(),
					R.layout.photo_frame);
			BitmapTool get = new BitmapTool();
			Bitmap bitmap = get.getBitmap(path);
			bitmap = Bitmap.createBitmap(bitmap);
			views.setImageViewBitmap(R.id.widget_photo, bitmap);
			AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
			appWidgetManager.updateAppWidget(new ComponentName(context,PhotoProviderThree.class), views);
		}
		super.onReceive(context, intent);
	}

特别注意:
当使用
views.setImageViewResource(R.id.widget_photo, R.drawable.background);

更新时,没什么问题,View里面的图片可以完全更新,这样图片只能来自程序本身自带的。如果需要使用程序以外的图片就要用到:
views.setImageViewBitmap(R.id.widget_photo, bitmap);
这是要注意添加:
bitmap = Bitmap.createBitmap(bitmap);
不然图片是不会更新的。还有就是图片不能太大,如果太大也是不能更新的!
具体问题参考老外的文章:http://code.google.com/p/android/issues/detail?id=8489
http://eyes-free.googlecode.com/svn/trunk/androidsays/src/com/google/marvin/androidsays/WidgetInterface.java

五、Widget不错的参考资料:
http://hi.baidu.com/tdskee/blog/item/3459249b3a6da1a1c9eaf4bc.html
http://hi.baidu.com/tdskee/blog/item/575bbcaf758559d87cd92abe.html
分享到:
评论

相关推荐

    Android代码-Android小部件AppWidget.rar

    "Android代码-Android小部件AppWidget.rar"是一个包含关于如何创建和实现Android小部件的代码示例的压缩包。 在Android开发中,AppWidget的设计和实现涉及到以下几个关键知识点: 1. **AppWidgetProvider**: 这是...

    Android-Android桌面小部件widget日签Or日历可作为桌面日历

    在Android平台上,开发者可以利用Android桌面小部件(Widget)功能为用户提供便捷的桌面服务,比如“Android桌面小部件widget日签Or日历可作为桌面日历”就是一个很好的例子。这个应用设计巧妙,不仅展示了日期,还...

    Android小部件AppWidget

    Android小部件AppWidget是Android操作系统中的一个重要特性,它允许用户在主屏幕上放置应用程序的轻量级视图,提供快速访问或交互的功能。AppWidget并非完整的应用程序,而是应用程序的一个部分,通常展示简化的UI和...

    Android应用源码之Android小部件AppWidget.zip项目安卓应用源码下载

    Android应用源码之Android小部件AppWidget.zip项目安卓应用源码下载Android应用源码之Android小部件AppWidget.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...

    Android应用源码之Android小部件AppWidget.zip

    Android小部件(AppWidget)是Android系统提供的一种特殊类型的用户界面组件,允许开发者在用户的主屏幕上添加可交互的微型应用程序视图。这个压缩包“Android应用源码之Android小部件AppWidget.zip”包含了一个用于...

    Android之AppWidget(桌面小部件)开发浅析

    AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序,先看图:   图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁的程序,可以做成AppWidget,这样能方便地使用。典型...

    Android应用源码之Android小部件AppWidget-IT计算机-毕业设计.zip

    在Android平台上,AppWidget是Android小部件,它们是桌面组件,允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用程序。本项目是针对Android应用源码的学习与毕业设计,旨在帮助开发者理解如何创建和集成...

    安卓Android源码——安卓Android小部件AppWidget.rar

    这个压缩包"安卓Android源码——安卓Android小部件AppWidget.rar"显然包含了一些关于如何开发Android AppWidget的源代码示例。 在Android应用开发中,AppWidget的创建涉及以下几个核心知识点: 1. **...

    Android小部件AppWidget.zip

    这个名为"Android小部件AppWidget.zip"的压缩包包含了一个Android应用的源码,供开发者参考和学习使用。它涉及到Android开发中的几个核心知识点,包括AppWidgetProvider、RemoteViews、BroadcastReceiver以及XML布局...

    Android高级应用源码-Android小部件AppWidget.zip

    这个“Android高级应用源码-Android小部件AppWidget.zip”包含了一个关于如何创建和实现这类小部件的示例项目。通过深入研究这个源码,我们可以学习到以下关键知识点: 1. **AppWidgetProvider**: 这是Android中...

    安卓Widget小组件相关-Android小部件AppWidget.rar

    这个压缩包“Android小部件AppWidget.rar”似乎包含了一些关于创建和实现Android Widget小组件的资源,可能是源代码、文档或者示例项目。 在Android开发中,AppWidget是Widget小组件的主要实现类。它是由Android ...

    Android5.0 launcher 小部件预览图片

    修改Android5.0 launcher 小部件预览图片大小

    android app widget小部件

    Android App Widget是Android系统提供的一种轻量级组件,允许开发者在用户的主屏幕上创建小型应用程序,通常称为小部件或快捷方式。这些小部件可以提供实时信息,如天气预报、日历事件,或者执行简单的操作,如播放...

    Android小部件AppWidget-IT计算机-毕业设计.zip

    【Android小部件AppWidget】是Android操作系统中的一种特殊组件,它允许用户在主屏幕上放置小型的应用程序界面元素,提供快捷的操作或显示实时信息。在Android应用开发中,AppWidget是扩展应用程序功能的一种方式,...

    android时钟widget小部件源代码

    本主题聚焦于一个特定类型的Widget——时钟Widget,通过分析“android时钟widget小部件源代码”,我们可以深入了解Android Widget的开发及其与时间显示的集成。 Android时钟Widget通常包括以下几个核心组件和功能:...

    android小部件功能集合展示

    "android小部件功能集合展示"这个项目旨在演示Android小部件的各种功能和用法,以增强用户体验。在这个项目中,开发者可能会涉及到以下几个关键知识点: 1. **小部件基础**: - **Widget Provider**: 是小部件的...

    安卓开发-Android小部件AppWidget.zip

    【Android小部件AppWidget】是安卓平台上的一种特殊应用组件,它允许开发者在用户的主屏幕上创建交互式的、小型的应用视图,通常称为“桌面小部件”。这些小部件可以提供快速访问功能,如天气预报、日历事件、音乐...

Global site tag (gtag.js) - Google Analytics