Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> 剖析Android自帶Widget - Clock指針鐘表

剖析Android自帶Widget - Clock指針鐘表

編輯:初級開發

  我們都知道android操作系統自帶了幾個Widget組件,比如帶指針的鐘表,一般在Home Screen上的那個表盤,它在哪裡呢? 我們其實在alarmclock這個包中可以看到,下面就來一起分析一下實現的方法。其實有關內部的更新在AnalogClock類已經完成了,這裡僅僅分析Widgets部分。   首先看下alarmclock中有關widgets的androidManifest.XML描述內容如下: <receiver android:name="AnalogAppWidgetProvider" android:label="@string/analog_gadget-android123">              <intent-filter>                  <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />              </intent-filter>             <meta-data android:name="android.appwidget.provider" android:resource="@XML/analog_appwidget" />  </receiver>   xml/analog_appwidget.XML的內容如下    <?XML version="1.0" encoding="utf-8"?>  <appwidget-provider XMLns:android="http://schemas.android.com/apk/res/android"
     android:minWidth="146dip"  //widget最小寬度
     android:minHeight="146dip" //widget最小高度
     android:updatePeriodMillis="0" //更新頻率,單位為毫秒
     android:initialLayout="@layout/analog_appwidget"  >
 </appwidget-provider> layout/analog_appwidget.XML的內容如下 <AnalogClock XMLns:android="http://schemas.android.com/apk/res/android"       android:dial="@drawable/appwidget_clock_dial"   //表盤背景圖片      android:hand_hour="@drawable/appwidget_clock_hour"   //時針圖片      android:hand_minute="@drawable/appwidget_clock_minute" //分針圖片      android:layout_width="fill_parent"        android:layout_height="fill_parent" /> 最後我們看下androidmanifest.XML中的receiver是如何觸發的,AnalogAppWidgetProvider.Java的內容如下

public class AnalogAppWidgetProvider extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
       
        if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
            RemoteVIEws views = new RemoteVIEws(context.getPackageName(),
                    R.layout.analog_appwidget); //這裡RemoteVIEws載入的布局文件
           
            int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
           
            AppWidgetManager gm = AppWidgetManager.getInstance(context);
            gm.updateAppWidget(appWidgetIds, vIEws); //開始執行刷新內容
        }
    }
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved