Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android--桌面組件AppWidget

Android--桌面組件AppWidget

編輯:關於Android編程

AppWidget通常被稱為桌面插件,是Android系統應用開發層上的重要部分,是把一個進程的控件嵌入到別外一個進程的窗口裡的一種方法,是與客戶端程序交互的組件程序。

先看看效果圖:

\

下面進行實例記錄如何創建AppWidget,它是如何與客戶端程序進行交互:

第一步:在res目錄下新建xml文件夾並創建<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+eXd4X2FwcHdpZGdldF9pbmZvLnhtbDwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">
第二步:新建布局文件ywx_appwidget.xml



    
    
      
     
     

第三步:新建一個ExampleAppWidgetProvider.java,實現AppWidgetProvider中的方法

package com.ywx.appwidget_04;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class ExampleAppWidgetProvider extends AppWidgetProvider{
	private static final String UPDATE_ACTION = "com.ywx.appwidget_04.UPDATE_APP_WIDGET";
	//接收廣播事件
	@Override
	public void onReceive(Context context, Intent intent) {
		super.onReceive(context, intent);
	}

	//在到達指定的更新時間之後或者當用戶向桌面添加App Widget時會調用該方法
	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		super.onUpdate(context, appWidgetManager, appWidgetIds);
	}
	
   	//當AppWidget被刪除時,會調用該方法
	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		super.onDeleted(context, appWidgetIds);
	}

	//當一個AppWidget的實例第一次被創建時會調用該方法
	@Override
	public void onEnabled(Context context) {
		super.onEnabled(context);
	}

	//當最後一個AppWidget實例被刪除後調用該方法
	@Override
	public void onDisabled(Context context) {
		super.onDisabled(context);
	}
}


第四步:在AndroidManifest.xml中聲明:這裡有兩個actiong,一個是系統的,一個是自定義的,只要滿足任何一個action就會觸發事件


            
                
            
            
                
            
            
        

完成以上四步就能夠完成簡單的AppWidget示例。
在AppWidget開發過程中主要運用到了PendingIntent和RemoteViews,下面將用法記錄如下:
PendingIntent主要的三個方法:
1.getActivity(Context context,int requestCode,Intent intent,int flags)
2.getBroadcast(Context context,int requestCode,Intent intent,int flags)
3.getService(Context context,int requestCode,Intent intent,int flags)
RemoteViews的作用:表示一系列的view對象及所表示的對象運行在另外的進程當中。
appwidget組件程序並不是處在當前的進程當中,所以對於監聽器的綁定事件與原來的有所區別:
在onUpdate()方法中添加

Intent intent = new Intent();
		intent.setAction(UPDATE_ACTION);
		//使用getBroadcast生成PendingIntent,當對象執行時,發送廣播
		PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.ywx_appwidget);
		remoteViews.setOnClickPendingIntent(R.id.widgetBut, pendingIntent);
		appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);

在onRecive()方法中添加
		String action = intent.getAction();
		if(UPDATE_ACTION.equals(action)){
			RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.ywx_appwidget);
			remoteViews.setImageViewResource(R.id.imageId, R.drawable.upload);
			remoteViews.setTextViewText(R.id.widgetText, "娃哈哈");
			AppWidgetManager appWidgeManager = AppWidgetManager.getInstance(context);
			ComponentName componentName = new ComponentName(context,ExampleAppWidgetProvider.class);
			appWidgeManager.updateAppWidget(componentName, remoteViews);
		}else{
			super.onReceive(context, intent);
		}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved