Android开发之AppWidget应用(二)

来源:互联网 发布:kakakaoo的淘宝网店 编辑:程序博客网 时间:2024/05/16 18:02

转自:http://blog.csdn.net/ch_984326013/article/details/6664981


今天我们接着讲AppWidget应用!今天我们做了个实例,用于显示当前时间,下面来看下运行效果:

今天就以该程序为例来讲解,开发过程。

1、创建Android项目,命名为AppWidget;

2、在res目录下新建一个目录为xml,在该目录下新建一个xml文件,名称为appwidget_provider.xml。内容代码如下:

view plainprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"   
  3.    android:minWidth="294dp"  
  4.    android:minHeight="72dp"  
  5.    android:updatePeriodMillis="86400000"  
  6.    android:initialLayout="@layout/appwidget">  
  7. </appwidget-provider>  

3、在布局文件中新建一个布局文件,命名为appwidget,该内容代码如下:

view plainprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.    android:layout_width="fill_parent"  
  4.    android:layout_height="fill_parent"  
  5.    >  
  6.    <AnalogClock  
  7.       android:id="@+id/myAnalogClock"  
  8.       android:layout_width="wrap_content"  
  9.       android:layout_height="wrap_content">  
  10.    </AnalogClock>  
  11.    <TextView  
  12.       android:id="@+id/myText"  
  13.       android:layout_width="wrap_content"  
  14.       android:layout_height="wrap_content"/>  
  15. </LinearLayout>   

4、新建一个类,该类继承于AppWidgetProvider。在该类中实现了项目的全过程,该类具体代码如下:

view plainprint?
  1. public class AppWidgetProdiverDemo extends AppWidgetProvider{  
  2.     //声明年月日时分  
  3.     int mYear;  
  4.     int mMonth;  
  5.     int mDay;  
  6.     int mHour;  
  7.     int mMinutes;  
  8.     String str;  
  9.     @Override  
  10.     public void onDeleted(Context context, int[] appWidgetIds) {  
  11.         // TODO Auto-generated method stub  
  12.         super.onDeleted(context, appWidgetIds);  
  13.     }  
  14.   
  15.     @Override  
  16.     public void onDisabled(Context context) {  
  17.         // TODO Auto-generated method stub  
  18.         super.onDisabled(context);  
  19.     }  
  20.   
  21.     @Override  
  22.     public void onEnabled(Context context) {  
  23.         // TODO Auto-generated method stub  
  24.         super.onEnabled(context);  
  25.     }  
  26.   
  27.     @Override  
  28.     public void onReceive(Context context, Intent intent) {  
  29.         // TODO Auto-generated method stub  
  30.         super.onReceive(context, intent);  
  31.     }  
  32.     //更新界面函数  
  33.     @Override  
  34.     public void onUpdate(Context context, AppWidgetManager appWidgetManager,  
  35.             int[] appWidgetIds) {  
  36.         // TODO Auto-generated method stub  
  37.         super.onUpdate(context, appWidgetManager, appWidgetIds);  
  38.         Timer timer=new Timer();  
  39.         timer.scheduleAtFixedRate(new MyTime(context,appWidgetManager), 1, 60000);  
  40.     }  
  41.     //定义一个类,用于显示时间  
  42.     class MyTime extends TimerTask{  
  43.         RemoteViews remoteViews;  
  44.         AppWidgetManager appWidgetManager;  
  45.         ComponentName thisWidget;  
  46.         public MyTime(Context context, AppWidgetManager appWidgetManager) {  
  47.             // TODO Auto-generated constructor stub  
  48.             this.appWidgetManager=appWidgetManager;  
  49.             remoteViews=new RemoteViews(context.getPackageName(),R.layout.appwidget);  
  50.             thisWidget=new ComponentName(context, AppWidgetProdiverDemo.class);  
  51.         }  
  52.         @Override  
  53.         public void run() {  
  54.             // TODO Auto-generated method stub  
  55.             try{  
  56.                 long time=System.currentTimeMillis();  
  57.                 Calendar mCalendar=Calendar.getInstance();  
  58.                 mCalendar.setTimeInMillis(time);  
  59.                 mYear=mCalendar.get(Calendar.YEAR);  
  60.                 mMonth=mCalendar.get(Calendar.MONTH);  
  61.                 mDay=mCalendar.get(Calendar.DAY_OF_MONTH);  
  62.                 mHour=mCalendar.get(Calendar.HOUR_OF_DAY);  
  63.                 mMinutes=mCalendar.get(Calendar.MINUTE);  
  64.                 str=mYear+"年"+mMonth+"月"+mDay+"日"+mHour+"时"+mMinutes+"分";  
  65.                 remoteViews.setTextViewText(R.id.myText,str);  
  66.                 appWidgetManager.updateAppWidget(thisWidget, remoteViews);  
  67.             }catch(Exception e){  
  68.                 e.printStackTrace();  
  69.             }  
  70.         }  
  71.     }  
  72. }  

5、这里还需要注意,我们开发AppWidget需要在AndroidManifest.xml中注册相关信息,在本项目中,需要注册信息如下:

view plainprint?
  1. <receiver android:name="AppWidgetProdiverDemo">  
  2.             <intent-filter>  
  3.                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>  
  4.             </intent-filter>  
  5.             <meta-data android:name="android.appwidget.provider"  
  6.                 android:resource="@xml/appwidget_provider" />  
  7.         </receiver>  
6、单击该项目,执行之。然后返回屏幕,用鼠标左击屏幕长按!不时,就会弹出一个对话框,里面有一个窗口小部件,单击,然后找到自个的程序。单击执行便是。在这里我就不详细讲解了!如果需要详细了解AppWidget开发的详细过程。可以回看这里http://dev.10086.cn/cmdn/wiki/index.php?edition-view-2467-1.html,谢谢!

原创粉丝点击