前面一節已經實現了一個簡單的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、
- <?xml version="1.0" encoding="utf-8"?>
- <appwidget-provider xmlns:Android="http://schemas.android.com/apk/res/android"
- android:minWidth="100dp"
- android:minHeight="72dp"
- android:updatePeriodMillis="86400000"
- android:initialLayout="@layout/myappwidget"
- >
- </appwidget-provider>
上面分別是 定義widget的寬度,高度,更新周期,以及layout的widget布局。
下面是我們的布局文件:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/widget_bg1"
- android:gravity="center"
- android:id="@+id/layout"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/txtMonth"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="#000000"
- android:layout_margin="2dp"
- android:text="" />
- <TextView
- android:id="@+id/txtDay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="#990033"
- android:textSize="25dp"
- android:text="" />
- <TextView
- android:id="@+id/txtWeekDay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="2dp"
- android:textColor="#000000"
- android:text="" />
- </LinearLayout>