安卓开发AppWidget开发入门指导

本文所要讲的主要内容包括Android桌面小部件、App Widget的开发入门指导,并通过一个简单实例的形式来直观的讲解App Widget。

站在用户的角度思考问题,与客户深入沟通,找到巴州网站设计与巴州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、申请域名网站空间、企业邮箱。业务覆盖巴州地区。

一、Widget 、App Widget 、Web App 的概念

Widget最初的概念是98年一个叫Rose的苹果工程师提出,直到2003年的时候才正式为大家所知,不过随后无数大公司都开始接受并应用这一思路。 现在我们看到在苹果系统里按下F4弹出的Dashboard里的小工具叫Widget,在Windows 7里侧边栏上的那些漂亮的小工具叫Gadget(widget变体?),除此以外还有yahoo Widget等等Widget产品。他们有一个共同的特点就是采用前台Web开发用的技术(譬如HTML、CSS、Javascript)来制作的小工 具、小部件。

在Android系统里,几乎每个可视化的View组件都叫Widget,起这个名字可能当时是为了赶时髦。

App Widget是从Android 1.5以后才有的东东,就是可以放在Android桌面上的应用程序小组件。这一点上看他的功能很像windows的侧边栏小工具,可惜的是他的采用技术 并不是HTML等技术。当然App Widget才是我们本讲的主角,本来他应该顺理成章叫做Widget的,至少也要叫做Gadget吧,可惜这个名字已经被他自己的系统占用了,所以只好 改名叫App Widget。

***讲一下Web App 或者说是Android Web Application,也许叫mobile web application 更准确些。我们发现现在智能机系统平台很多,譬如iOS、Android、Windows Phone 、WebOS、BlackBerry等等,它们采用的技术框架也各不相同,有没有办法写一个程序在各个系统上都能运行呢?答案是肯定的,写基于 Webkit的浏览器的应用即可。我们使用 HTML5、CSS3、JavaScript、WebKit 等技术来写的Web Application也许是今后的一个大潮流也说不准啊。有机会我们再讲讲Android Web Application 的开发。

二、App Widget 的简单例子:Hello App Widget

App Widget的技术实现有那么一点点绕,我们用一个最简单的例子Hello App Widget来操作一遍,然后再针对这个例子做讲解,也许你会理解的更快些。

1、新建一个项目 Lesson35_HelloAppWidget ,注意创建时可以不选Create Activity。

2、准备好一个Widget的显示布局文件 layout/widget.xml,内容如下:

XML/HTML代码

 
 
 
  1.   
  2.   
  3.   
  4.     

3、准备好一个Widget的配置文件 xml/provider_info.xml,该文件配置了widget可以占用的屏幕长宽、更新频率,所显示的布局文件(就是上面的那个布局文件)等,其内容如下:

XML/HTML代码

 
 
 
  1.   
  2.   
  3.   
  4.   
  5.   
  6.   
  7.   
  8.   
  9.   

4、准备好一个处理widget请求的Java文件,basic.android.lesson35包下的 HelloWidgetProvider,他继承了AppWidgetProvider类,在本例中没有任何请求处理的具体代码,我在java文件中写了 大量注释,方便你的理解。内容如下:

Java代码

 
 
 
  1. package basic.android.lesson35;   
  2.   
  3. import android.appwidget.AppWidgetManager;   
  4. import android.appwidget.AppWidgetProvider;   
  5. import android.content.Context;   
  6. import android.content.Intent;   
  7. import android.util.Log;   
  8.   
  9. // AppWidgetProvider 是 BroadcastReceiver 的子类,本质是个 广播接收器,它专门用来接收来自 Widget组件的各种请求(用Intent传递过来),所以如果让我给他起名的话 我会给他命名为AppWidgetReceiver,每一个Widget都要有一个AppWidgetProvider.   
  10. public class HelloWidgetProvider extends AppWidgetProvider {   
  11.   
  12.     //每个请求都会传递给onReceive方法,该方法根据Intent参数中的action类型来决定自己处理还是分发给下面四个特殊的方法。   
  13.     @Override  
  14.     public void onReceive(Context context, Intent intent) {   
  15.   
  16.         Log.i("yao", "HelloWidgetProvider --> onReceive");   
  17.         super.onReceive(context, intent);   
  18.     }   
  19.   
  20.     //如果Widget自动更新时间到了、或者其他会导致Widget发生变化的事件发生,或者说Intent的值是android.appwidget.action.APPWIDGET_UPDATE,那么会调用onUpdate,下面三个方法类似   
  21.     @Override  
  22.     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {   
  23.         //AppWidgetManager 顾名思义是AppWidget的管理器,appWidgetIds 桌面上所有的widget都会被分配一个唯一的ID标识,那么这个数组就是他们的列表   
  24.         Log.i("yao", "HelloWidgetProvider --> onUpdate");   
  25.         super.onUpdate(context, appWidgetManager, appWidgetIds);   
  26.     }   
  27.   
  28.     //当一个App Widget从桌面上删除时调用   
  29.     @Override  
  30.     public void onDeleted(Context context, int[] appWidgetIds) {   
  31.         Log.i("yao", "HelloWidgetProvider --> onDeleted");   
  32.         super.onDeleted(context, appWidgetIds);   
  33.     }   
  34.   
  35.     //当这个App Widget***次被放在桌面上时调用(同一个App Widget可以被放在桌面上多次,所以会有这个说法)   
  36.     @Override  
  37.     public void onEnabled(Context context) {   
  38.         Log.i("yao", "HelloWidgetProvider --> onEnabled");   
  39.         super.onEnabled(context);   
  40.     }   
  41.   
  42.     //当这个App Widget的***一个实例被从桌面上移除时会调用该方法。   
  43.     @Override  
  44.     public void onDisabled(Context context) {   
  45.         Log.i("yao", "HelloWidgetProvider --> onDisabled");   
  46.         super.onDisabled(context);   
  47.     }   
  48.   
  49. }  

5、配置AndroidManifest.xml文件,增加一个receiver标签,这个标签看起来很像前面讲的BroadReceiver的配置,具体内容如下:

XML/HTML代码

 
 
 
  1.   
  2.   
  3.       
  4.   
  5.       
  6.   
  7.           
  8.           
  9.               
  10.                   
  11.                   
  12.               
  13.               
  14.               
  15.           
  16.       
  17.  

6、编译并运行程序,我们知道这种Widget程序,即使装完了也不会在程序列表中出现,因为它根本就没有main Activity,下面我给不清楚的同学说一下如何把一个widget放到桌面上。

在模拟器上桌面上长按,等待弹出下面对话框:

选择窗口小部件:

选择Hello,App Widget:

文章题目:安卓开发AppWidget开发入门指导
本文URL:http://www.hantingmc.com/qtweb/news20/516720.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联