編輯:關於Android編程
一、Widget設計步驟
需要修改三個XML,一個class:
1.第一個xml是布局XML文件(如:main.xml),是這個widget的。一般來說如果用這個部件顯示時間,那就只在這個布局XML中聲明一個textview就OK了。
2.第二個xml是widget_provider.xml,主要是用於聲明一個appwidget的。其中,Layout就是指定上面那個main.xml。
3.第三個xml是AndroidManifest.xml,注冊broadcastReceiver信息。
4.最後那個class用於做一些業務邏輯操作。讓其繼承類AppWidgetProvider。AppWidgetProvider中有許多方法,一般情況下我們只是覆寫onUpdate(Context,AppWidgetManager,int[])方法。
二、代碼案例
1.定義一個WidgetProvider, 用來處理Widget的一些CallBack
(1)OnEnable,創建第一個Widget時調用。
(2)OnDisable, 和OnEnable相反,創建最後一個Widget調用。
(3)OnDelete,Widget的一個實例被刪除時調用。
(4)OnUpdate,當Widget需要更新它的View時調用。
(5)onReceive():此方法默認情況下處理BroadcastReceiver行為,並調用上面的方法。
public class WidgetDemoAppWidgetProvider extends AppWidgetProvider{ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; // Perform this loop procedure for each App Widget that belongs to this provider for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; Intent intent = new Intent(); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_demo_layout); views.setOnClickPendingIntent(R.id.wap_app, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, views); } } }
2.在AndroidManifast.xml 注冊Provide
<receiver android:name="WidgetDemoAppWidgetProvider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_demo_appwidget_info" /> </receiver>
3.創建Widget配置XML在xml文件夾下:
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="60px" android:minHeight="60px" android:initialLayout="@layout/widget_demo_layout" > </appwidget-provider>
(4)創建Widget 的Layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/wap_app" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"/> </LinearLayout>
AppWidget 通過內存共享進行數據通訊.原理圖如下: 1.創建一個BroadcastReceiver,繼承AppWidgetProvider. 2.在Androi
首先我們來看下dex文件的格式: class_defs的結構: (1) class_idx 描述具體的 class 類型 ,值是 type_ids 的一
首先給大家展示下效果圖,感覺還不錯,請繼續往下閱讀:下拉刷新: 上劃加載 &nbs
在前面的博客中,小編介紹了Android的極光推送以及如何實現登錄的一個小demo,對於xml布局頁面,擺控件這塊的內容,小編還不是很熟練,今天小編主要簡單總結一下在An