Android桌面组件Widge开发是一种很小的应用程序,每一个Widget就是一个BroadcastReceiver,然而最重要尤其是相关注册,
下面是本次代码核心注册
</activity>
<activity
android:name=".TargetActivity"
android:label="TargetActivity"></activity>
<receiver
android:name="AppwidgetTest">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE"
/>
</intent-filter>
<intent-filter>
<action
android:name="zzy.appwidget03.UPDATE_APP_WIDGET"
/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info"
/>
</receiver>
</application>
注册其中 metadata来描述Widget的细节,appwidget_info是我门要要编写描述Widget下面将会提到解释TargetActivity使我新建的一个Activity
用来当我点击桌面widget中的Button时跳转的页面的Activity
其余
的都是必不可少的申明!
。
首先
现在新建一个XMl包在Layout中,里面添加一个XMl文件
为appwidget_info文件用来设置桌面上的widget里面的内容设置桌面组件的属性:
<?xml
version="1.0"
encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="100dp"
android:minHeight="50dp"
android:updatePeriodMillis="86400000"
android:initialLayout="@layout/appwidget"
>
</appwidget-provider>
android:minWidth,android:minHeight,android:updatePeriodMillis
分别是指桌面组件的最小宽度和最小高度,最后一个表示其自动更新的时间
上面的appwidget是在layout中新建的一个XML文件
具体设置
桌面组件的布局文件
<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/widgetTextId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="widget test"
android:background="#000000"
/>
<ImageView
android:id="@+id/imageId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_sina"
/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="测试按钮"
/>
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="更换图片"
/>
</LinearLayout>
然后要建立一个widget,创建一个类,让其继承AppWidgetProvider,在AppWidgetProvider中有许多方法onUpdate,onDelete,onEnabled,onDisabled方法要知道这些方法
的用处:代码
public class AppwidgetTest extends AppWidgetProvider
{
private static final String UPDATE__ACTION="zzy.appwidget03.UPDATE_APP_WIDGET";
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
String action=intent.getAction();
if (action.equals(UPDATE__ACTION))
{
//先得到remoteView
RemoteViews remoteViews=new RemoteViews(context.getPackageName()
, R.layout.appwidget);
//更新图面显示
remoteViews.setImageViewResource(R.id.imageId,R.drawable.icon_twitter);
remoteViews.setTextViewText(R.id.widgetTextId, "你好");
AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);
// 得到整个widget
ComponentName componentName=new ComponentName(context,AppwidgetTest.class);
//开始更新widget
appWidgetManager.updateAppWidget(componentName, remoteViews);
}
else {
super.onReceive(context, intent);
}
}
其中这次我是通过广播机制,当我们点击下面方法中的Button(变换图片)的时候,我设置此时的按钮当以广播的形式发送,通过上面Activity中receive()方法来接受Intent类型
先得到整个Widget
然后通过updateAppWidget方法构建一个remoteVtew用来对整个组件的更新,上面的代码最终要的还有ComponentName来表示应用程序组件的名字
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Intent intent=new Intent();
Intent intent2=new Intent(context,TargetActivity.class);
intent.setAction(UPDATE__ACTION);
//设置pendingIntent
得到相关Intent信息
PendingIntent pendingIntent=PendingIntent.getBroadcast(context,-1, intent, 0);
PendingIntent pendingIntent2=PendingIntent.getActivity(context,0, intent2, 0);
//得到当前从context
得到设置的桌面组件
RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.appwidget);
//设置监听器
第一个为button1
第二个人设置调专页面的pendingIntent
remoteViews.setOnClickPendingIntent(R.id.button2, pendingIntent);
remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent2);
//更新AppWidget
//第一个参数用于指定被更新AppWidget的ID
appWidgetManager.updateAppWidget(appWidgetIds,remoteViews);
System.out.println("onupdate");
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
System.out.println("onDeleted");
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
System.out.println("onDisabled");
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
System.out.println("onEnabled");
super.onEnabled(context);
}
}
上面的代码是AppWidget组基本的应用
也是我们必须掌握的内容,定义俩个按钮,分别对俩个按钮设置俩个Intent,然后是PendingIntent的应用,个人感觉这个PendingIntent的应用就像是对Intent的包裹一样,当我们用到的时候再将其拿出来应用,俩个PendingIntent分别对应着俩个不同Action。RemoteViews被包装成一个layout和一些特定的内容发送并显示到桌面上。
最后,整体感觉AppWidget
用处就是像那个播放歌曲的后台显示信息或者是日历事件一类,然后自己可以对拖到桌面上显示的那个进行操作。
分享到:
相关推荐
在Android应用开发中,Widget组件是用户界面的一个重要组成部分,它允许开发者将应用程序的功能和信息直接展示在用户的桌面或通知栏上,无需打开应用程序。Widget提供了便捷的方式,让用户可以快速交互,增强了用户...
总结来说,Android桌面小部件开发涉及了布局设计、`AppWidgetProvider`的使用、`BroadcastReceiver`的实现以及在`AndroidManifest.xml`中的配置。通过这个入门项目,你可以学习到如何创建一个基础的桌面小部件,并...
在Android应用开发中,Widget小组件是用户界面的重要组成部分,它们允许用户在主屏幕上与应用程序进行交互,而无需打开实际的应用。本资料包"Android应用源码之android Widget小组件开发.zip"提供了一套完整的源代码...
Android 桌面组件,又称为 App Widget,是 Android 系统中一种独特且实用的功能。它允许开发者创建小型的应用程序界面,用户可以直接在主屏幕上进行交互,无需打开完整的应用程序。App Widget 提供了一种快捷的方式...
在Android平台上,Widget小组件是应用在主屏幕上提供快速访问或简单交互的一种方式。它们可以显示实时信息,比如天气、时钟或者新闻摘要,而无需用户打开完整的应用程序。本资料包"androidWidget小组件开发.zip"包含...
总的来说,Android桌面组件(Widget)提供了便捷的方式,让应用程序可以直接在用户主屏幕上呈现信息和功能,提高用户体验。开发者需要理解AppWidgetProvider、AppWidgetProviderInfo和AppWidgetManager的用法,以及...
本压缩包"Android高级应用源码-android Widget小组件开发"提供了关于如何创建和优化Android Widget的详细示例。以下是对这个主题的深入探讨: 一、Android Widget概述 Widget是Android系统中的一种轻量级组件,它们...
本主题聚焦于"Android桌面插件-时钟widget",这是一个非常实用且常见的组件,它能为用户提供即时的时间显示,甚至支持多时区时间查看。 时钟Widget是Android系统中的一个核心组件,开发者可以通过自定义实现来提供...
在Android平台上,开发者可以利用Android桌面小部件(Widget)功能为用户提供便捷的桌面服务,比如“Android桌面小部件widget日签Or日历可作为桌面日历”就是一个很好的例子。这个应用设计巧妙,不仅展示了日期,还...
在本篇内容中,我们将深入探讨如何创建一个Android桌面小窗口Widget,并通过"android 桌面小窗口 widget demo"来实践。 首先,我们需要了解Android Widget的基本组成和工作原理。Widget主要由以下几部分构成: 1. ...
在 Android 桌面应用程序中,Home 分析目录是非常重要的组件之一,负责管理桌面上的图标、快捷方式、widget 等元素。Home 分析目录的主要功能包括: 1. 桌面图标管理:Home 分析目录负责管理桌面上的图标,包括添加...
Android 桌面控件(AppWidget)是Android操作系统提供的一种独特功能,允许开发者创建可以在用户主屏幕上显示的小型应用程序组件。这些控件通常提供快速访问应用的核心功能或展示实时信息,如天气预报、日历事件或...
总之,"android 源码 android Widget开发案例 eclipse项目 直接导入"为开发者提供了一个实践平台,通过它,开发者能够深入学习Widget的工作原理,提高Android应用的桌面体验设计能力,让手机界面更加个性化和实用。
在这个进阶项目“Android桌面组件【app widget】—心情记录器”中,我们将深入探讨如何创建一个能够帮助用户便捷记录和展示心情的小部件。 首先,我们需要理解App Widget的基本构成。一个App Widget通常包含以下几...
在Android应用开发中,Widget小组件是用户界面的重要组成部分,它们允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用。本项目是针对Android Widget小组件开发的一个毕业设计示例,适合学习和理解Android...
"Android桌面小组件(AppWidget)"这个主题主要涵盖以下几个关键知识点: 1. **AppWidget介绍**:AppWidget是Android系统提供的一个特性,它允许开发者将应用程序的功能以小部件的形式展示在用户的桌面,提升用户体验...
在安卓(Android)操作系统中,桌面组件(Widget)是一种用户界面功能,允许用户将应用程序的部分功能直接放置在手机或平板电脑的主屏幕上,以便快速访问和操作。日历桌面组件是这种功能的一个典型示例,它使用户...
Android App Widget是Android系统提供的一种轻量级的UI组件,允许开发者在用户的主屏幕上放置一些交互式的快捷方式或小部件,提供类似于桌面小工具的功能。这些小部件可以显示实时信息,如天气、日历事件、音乐播放...
本教程将通过一个最简单的实例,详细介绍如何创建一个Android桌面小组件,涉及的标签是"android appwidget"。 首先,我们需要了解AppWidget的基本构成。每个AppWidget由一个`AppWidgetProvider`类定义,它是Android...
Android widget 桌面组件开发 Widget是Android1.5版所引进的特性之一.Widget,可让用户在主屏幕界面及时了解程序显示的重要信息.标准的Android系统已包含几个Widget的示例,如模拟时钟,音乐播放器等. 一、AppWidget ...