Widgets基础篇(下)

转载 2012年03月24日 11:43:18
文章翻译整理自:http://developer.android.com/guide/topics/appwidgets/index.html
八,如何编写App Widget Configuration Activity
如果你想让用户在添加一个新的App Widget时,能对该App Widget进行一些个性化的配置的话,你可以通过编写一个App Widget Configuration Activity来实现。在用户添加一个新的App Widget时,configuration Activity能够自动被App Widget host启动
在该Activity中,你可以让用户对App Widget进行一些个性化的设置,比如颜色,大小,更新频率以及其他的一些设置。
configuration Activity应该像一般的Activity一样,在Android manifest文件中进行申明。App Widget host是通过ACTION_APPWIDGET_CONFIGURE action 来启动configuration Activity所以configuration Activity必须要能接收该Action.
比如,示例4
示例4
<activity android:name=".ExampleAppWidgetConfigure">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
    </intent-filter>
</activity>
同时在AppWidgetProviderInfo XML文件中,你也必须使用 android:configure属性中指明:当用户在添加一个新的App Widget时,哪个Configuration Activity将被启动。具体可以参照 示例5
示例5:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:configure="com.example.android.ExampleAppWidgetConfigure" 
    ... >
</appwidget-provider>
注意:这里的Activity用的是完整的名字,因为它将在你的APK包外被引用。
以上就是启动一个Configuration Activity,所有需要你做的。现在你需要关心的是Activity本身,在实现一个Configuration Activity时,你需要记住两件非常重要的事情。
首先App Widget host调用configuration Activity,configuration Activity应该总是能返回一个执行结果。返回结果应该包含同过Intent传给configuration Activity的要添加的App Widget的ID(该ID通过EXTRA_APPWIDGET_ID保存在Intent的extras中)
其次,如果我们App Widget的有configuration Activity,那么当App Widget被创建时,AppWidgetProvider的onUpdate()方法将不会被调用,(当configuration Activity被创建启动的时候,系统将不再发送ACTION_APPWIDGET_UPDATE广播)。当App Widget被创建的时候,configuration Activity必须负责请求AppWidgetManager对App Widget进行首次更新。然而以后只要更新时间到了,系统还是会发送ACTION_APPWIDGET_UPDATE广播,因此App Widget的onUpdate()方法还是会被调用,以进行App Widget更新。系统只是在App Widget被创建的时候,不发送ACTION_APPWIDGET_UPDATE广播。
在后面的文章,我们将讲述如何在configuration Activity中返回执行结果和更新App Widget.
九、如何在configuration Activity中更新App Widget和返回结果
configuration Activity必须负责请求AppWidgetManager对App Widget进行的首次更新。你可以通过AppWidgetManager直接来更新App Widget.
以下是在configuration Activity中更新App Widget和退出configuration Activity的主要步骤:
第一、在启动configuration Activity的Intent中得到App Widget的ID。比如,示例6.
示例6:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
    mAppWidgetId = extras.getInt(
            AppWidgetManager.EXTRA_APPWIDGET_ID, 
            AppWidgetManager.INVALID_APPWIDGET_ID);
}
第二、进行App Widget配置的处理。
第三、当App Widget的配置事务被处理完后,调用来AppWidgetManager.getInstance(context)得到AppWidgetManager的一个实例。
比如,示例7.
示例7
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
第四、调用updateAppWidget(int, RemoteViews)函数,通过RemoteViews对象来更新App Widget.比如,示例8。
示例8:
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.example_appwidget);
appWidgetManager.updateAppWidget(mAppWidgetId, views);
第五、把执行结果放在Intent,用Intent返回结果,并结束configuration Activity。比如,示例9
示例9:
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
注意configuration Activity首次启动的时候,应该把Activity的返回结果设置为RESULT_CANCELED.
这样如果用户中途退出了configuration Activity的话,系统将通知App Widget host该configuration被取消,这样App Widget将不被添加

相关文章推荐

Widgets基础篇(下)

文章翻译整理自:http://developer.android.com/guide/topics/appwidgets/index.html 八,如何编写App Widget Configurat...
  • hudashi
  • hudashi
  • 2011年12月11日 10:47
  • 1299

Widgets基础篇(上)

文章参照自:http://developer.android.com/guide/topics/appwidgets/index.html 一、前言 所谓App Widgets就是微型应用程序...
  • hudashi
  • hudashi
  • 2011年12月11日 10:46
  • 1835

Widgets基础篇(中)

文章参照自:http://developer.android.com/guide/topics/appwidgets/index.html 六、如何使用AppWidgetProvider AppW...
  • sshhbb
  • sshhbb
  • 2012年03月24日 11:42
  • 587

Android基础 【Chapter-3】Android widgets(Android控件)

Android基础 【Chapter-3】Android widgets(Android控件)本章主要讲到android的基本控件介绍,以及使用方法,基本参数,在其中你可以学到以下控件 ...

Widgets高级篇(三)

本文翻译整理自:http://developer.android.com/guide/topics/appwidgets/index.html#implementing_collections 3....
  • hudashi
  • hudashi
  • 2011年12月11日 10:52
  • 2568

Widgets高级篇(四)

本文翻译整理自:http://developer.android.com/guide/topics/appwidgets/index.html#implementing_collections 3....
  • hudashi
  • hudashi
  • 2011年12月11日 10:53
  • 2410

Widgets高级篇(二)

本文翻译整理自:http://developer.android.com/guide/topics/appwidgets/index.html#implementing_collections 3....
  • hudashi
  • hudashi
  • 2011年12月11日 10:51
  • 3937

Widgets高级篇(二)

本文翻译整理自:http://developer.android.com/guide/topics/appwidgets/index.html#implementing_collections 3....

How To…Consume BIData within Yahoo Widgets

  • 2010年11月21日 16:40
  • 1.72MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Widgets基础篇(下)
举报原因:
原因补充:

(最多只允许输入30个字)