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