注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

Widgets基础篇(下)  

2011-07-26 14:36:12|  分类: 开发专题 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
文章翻译整理自: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将不被添加.
关于Configuration Activity的完整实例请参考Widgets基础篇附件3(ExampleAppWidgetConfigure.java)
  评论这张
 
阅读(702)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017