`
shuai1234
  • 浏览: 936530 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

android之App Widget开发实例

 
阅读更多

   前面一节已经实现了一个简单的App Widget,这里将通过一个实例继续深入学习App Widget。

       首先继续了解下App Widget框架的主要的类:

       AppWidgetProvider:继承自BroadcastReceiver,在App Widget应用update,enable,disable和deleted时接受通知。其中onUpdate,onReceive是最常用到的方法。

      AppWidgetProviderInfo:描述AppWidget的大小,更新频率和初始界面等信息,以xml文件的形式存在于应用中的res/xml目录下。

     AppWidgetManager:负责管理AppWidget,向AppWidgetProvider发送通知。

     RemoteViews:一个可以在其他应用进程中运行的类,是构造AppWidget的核心。

 

     下面开始代码的编写,首先在res/xml下建立myappwidetprovider.xml、

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:minWidth="100dp"  
  4.     android:minHeight="72dp"  
  5.     android:updatePeriodMillis="86400000"  
  6.     android:initialLayout="@layout/myappwidget"  
  7.     >  
  8. </appwidget-provider>  
  上面分别是 定义widget的宽度,高度,更新周期,以及layout的widget布局。

 

  下面是我们的布局文件:

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="@drawable/widget_bg1"  
  6.     android:gravity="center"  
  7.     android:id="@+id/layout"  
  8.     android:orientation="vertical" >  
  9.   
  10.     <TextView  
  11.         android:id="@+id/txtMonth"  
  12.         android:layout_width="wrap_content"  
  13.         android:layout_height="wrap_content"  
  14.         android:textColor="#000000"  
  15.         android:layout_margin="2dp"  
  16.         android:text="" />  
  17. <TextView  
  18.         android:id="@+id/txtDay"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:textColor="#990033"  
  22.         android:textSize="25dp"  
  23.         android:text="" />  
  24. <TextView  
  25.         android:id="@+id/txtWeekDay"  
  26.         android:layout_width="wrap_content"  
  27.         android:layout_height="wrap_content"  
  28.         android:layout_margin="2dp"  
  29.         android:textColor="#000000"  
  30.         android:text="" />  
  31. </LinearLayout>  

 

   对应布局widget要求比较高,大家自行设计,更加美观的界面。

  接下来是我们的核心代码ExampleAppWidgetProvider类了:

 

[html] view plaincopy
  1. import android.app.PendingIntent;  
  2. import android.appwidget.AppWidgetManager;  
  3. import android.appwidget.AppWidgetProvider;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.text.format.Time;  
  7. import android.widget.RemoteViews;  
  8. import android.widget.Toast;  
  9.   
  10. public class ExampleAppWidgetProvider extends AppWidgetProvider{  
  11.     private String[] months={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};  
  12.     private String[] days={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  
  13.     @Override  
  14.     public void onUpdate(Context context, AppWidgetManager appWidgetManager,  
  15.             int[] appWidgetIds) {  
  16.         // TODO Auto-generated method stub  
  17.           
  18.         RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.myappwidget);  
  19.         Time time=new Time();  
  20.         time.setToNow();  
  21.         String month=time.year+" "+months[time.month];  
  22.         remoteViews.setTextViewText(R.id.txtDay, new Integer(time.monthDay).toString());  
  23.         remoteViews.setTextViewText(R.id.txtMonth, month);  
  24.         remoteViews.setTextViewText(R.id.txtWeekDay, days[time.weekDay]);  
  25.         Intent intent=new Intent("cn.com.karl.widget.click");  
  26.         PendingIntent pendingIntent=PendingIntent.getBroadcast(context, 0, intent, 0);  
  27.         remoteViews.setOnClickPendingIntent(R.id.layout, pendingIntent);  
  28.         appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);  
  29.           
  30.         super.onUpdate(context, appWidgetManager, appWidgetIds);  
  31.     }  
  32.       
  33.     @Override  
  34.     public void onReceive(Context context, Intent intent) {  
  35.         // TODO Auto-generated method stub  
  36.         super.onReceive(context, intent);  
  37.         if(intent.getAction().equals("cn.com.karl.widget.click")){  
  38.             Toast.makeText(context, "点击了widget日历", 1).show();  
  39.         }  
  40.     }  
  41. }  

 

   上面代码忘记做注释了,在这类分别解释下,使用remoteViews类分别加载上来布局文件的相应ID设置好值,然后PendingIntent 这就没什么好解释的了。

  最后在manifest中加入:

 

[html] view plaincopy
  1. <receiver android:name="ExampleAppWidgetProvider" >  
  2.            <intent-filter >  
  3.                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />  
  4.                <action android:name="cn.com.karl.widget.click" >  
  5.                </action>  
  6.            </intent-filter>  
  7.   
  8.            <meta-data  
  9.                android:name="android.appwidget.provider"  
  10.                android:resource="@xml/myappwidetprovider" />  
  11.        </receiver>  

   这样就完成了,运行项目看一下载手机上运行的效果吧:

 

   

   上面就是我们自己定义的AppWidget显示效果,点击它:

   这里为了表示点击了它,使用了Toast打印信息,当然我们也可以点击它之后启动相应的Activity。

分享到:
评论

相关推荐

    android之App Widget开发实例代码解析

    Android Widget开发案例实现是本文要介绍的内容,主要是来了解并学习Android Widget开发应用,今天我们要写一下Android Widget的开发,由于快点凌晨,我就不说的太具体了,同志们就模仿吧! 首先继续了解下App ...

    Android开发之App widget用法实例分析

    本文实例讲述了Android开发之App widget用法。分享给大家供大家参考,具体如下: 放在桌面上的控件叫做——App widget,例如可以在桌面上添加按钮、图片等等控件,例如桌面播放器的控制面板 AppWidgetProviderInfo...

    Android_Widget开发实例-电量监控

    一个简单的电量监控代码可以很好的演示Android平台下Widget开发中的基础方式,比如appWidget如何于Service交互以及RemoteViews的演示。完成的工程代码我们稍作美化后提供下载,同时下次开始我们提供一些国外比较优秀...

    Android开发入门之Appwidget用法分析

    本文实例讲述了Android Appwidget用法。分享给大家供大家参考,具体如下: App Widgets 是一个小型应用程序的View 他可以嵌入到其他应用程序中(如 桌面程序) 并且可以得到周期性刷新。 在创建App Widget之前需要...

    Android桌面组件App Widget用法入门教程

    本文实例讲述了Android桌面组件App Widget用法。分享给大家供大家参考。具体如下: Android开发应用除了程序应用,还有App Widget应用。好多人会开发程序应用而不会开发App Widget应用。本帖子就是帮助大家学习如何...

    Android桌面小组件(AppWidget)

    一个最简单的桌面小组件开发实例。点击之后发送广播消息,接收到消息之后更新小组件上的文字。是学习AppWidge类的好例子。

    讲解Android中的Widget及AppWidget小工具的创建实例

    1.Widget 、App Widget 、Web App 的概念 Widget最初的概念是98年一个叫Rose的苹果工程师提出,直到2003年的时候才正式为大家所知,不过随后无数大公司都开始接受并应用这一思路。 现在我们看到在苹果系统里按下F4弹...

    android开发资料大全

    android用户界面之Widget教程实例汇总 android用户界面之TabHost教程实例汇总 android用户界面之Gallery教程实例汇总 android用户界面之按钮(Button)教程实例汇 android用户界面之ProgressBar教程实例汇总 android...

    Android应用源码安卓源码包wifi蓝牙串口&Socket通讯窗口抖动Widget小组件等20个合集.zip

    Android小部件AppWidget.rar Android应用源码安卓与PC的Socket通信项目C#版+Java版.rar Android应用源码安卓与PC的Socket通信项目java版.rar Android系统访问串口设备源码.rar android蓝牙连接打印机.rar samsung ...

    android开发入门与实战(上)

    3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 第4章 赚钱的市场——AndroidMarket及应用发布 4.1 GoogleMarket产生背景与目的 4.2 体验“选货”的乐趣...

    android 2.3应用开发实战16-24.rar 光盘代码

    《android 2.3应用开发实战》包括 android介绍、开发环境、应用开发平台、活动程序 activity、意图方法 intent、widget、layout窗体布局、menu菜单、sqlite、service服务程序、应用程序国际化、webview、app widget...

    新版Android开发教程.rar

    Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...

    android 完全中文版 开发应用详解

    目录: 结构如下,非常详细 第1章 android系统概述 1 1.1 基础知识 1 1.1.1 android开发系统的...15.2 android应用开发实例 381 15.2.1 gui依赖类的程序 382 15.2.2 单独模块类程序 387 15.3 android的设计理念 393

    Android编程开发之RadioGroup用法实例

    本文实例讲述了Android编程开发之RadioGroup用法。分享给大家供大家参考,具体如下: RadioGroup 有时候比较有用.主要特征是给用户提供多选一机制。 MainActivity.java package com.example.lesson16_radio; ...

    Google Android SDK开发范例大全(第3版) 1/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Android学习系列教程实例.pdf

    Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS .........................................

    Android 4.X手机/平板电脑程序设计入门、应用到精通_源代

     4大类Android程序完全详解,包括Activity、Service.Content provider和Broadcast receiver,以及App Widget程序; 2D和3D绘图程序架构与案例,奠定开发游戏程序的基础; Google地图与自动定位程序,让您学会开发...

Global site tag (gtag.js) - Google Analytics