編輯:關於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);
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);
}
Android手勢密碼的實現
一、大致界面介紹:圖1圖2圖3圖4圖1:手勢密碼繪制界面 【主要是繪制上方的9個提示圖標和9個宮格密碼圖標】圖2:設置手勢密碼 【監聽手勢的輸入,TouchEvent的事
Android 安卓 VPN設置 L2TP教程
第一步: 打開手機主菜單,選擇“設置”,然後選擇“無線和網絡”第二步:選擇“虛擬專用網設置&rd
深入剖析Android四大組件(八)——結束Activity的4個階段
當我們試圖結束Activity的時候,ActivityManagerService的行為將會是怎樣的呢?這一節將介紹結束Activity的3種主要方法和4個階段。&nbs
Android仿QQ列表左滑刪除操作
最近學習了如何做一個像QQ的左滑RecyclerView的item顯示選項的,主要是用到Scroller我們首先新建一個自己的RecyclerView定義好一些要用的的變