æ¬ç¯æç®ä»ä»¥ä¸å 个ç¹æ¥ä»ç»AppWidget:
1.å¦ä½å建ä¸ä¸ªç®åçAppWidget
2.å¦ä½ä½¿å¾AppWidgetä¸å®¢æ·ç«¯ç¨åºäº¤äº
å建ç®åçAppWidget
å¨ä»ç»ä¹åç»å¤§å®¶çä¸ä¸ç¨åºè¿è¡çæåç»æå项ç®ç»æå¾ï¼ä»¥ä¾¿å¤§å®¶æ个æ´ä½çå°è±¡ã
è¿è¡ç»æå¾ï¼
项ç®ç»æå¾ï¼
第ä¸æ¥ï¼
é¦å
å¨resæ件夹ä¸æ°å»ºä¸ä¸ªåå为xmlçæ件夹ï¼ç¶åå¨xmlç®å½ä¸å建ä¸ä¸ªå为appwidget01çxmlæ件ï¼å¦ä¸å¾æ示ï¼ãè¿ä¸ªappwidget01ä¸çå
容å¦ä¸ï¼
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="
http://schemas.android.com/apk/res/android"
android:minWidth = "294dp"
android:minHeight = "72dp"
android:updatePeriodMillis = "86400000"
android:initialLayout = "@layout/appwidgetlayout"
>
</appwidget-provider>
è¿ä¸ªxmlæ¯ç¨æ¥æè¿°ä½ æè¦å建çappWidgetçä¸äºæè¿°ä¿¡æ¯çï¼æ¯å¦é«åº¦ã宽度ãå·æ°é´éãå¸å±æ件ççãä»
ä»
è¿ä¸ªæè¿°æ件è¿ä¸å¤ï¼æ们çå°çappWidgetå¯é½æ¯æçé¢å
ç´ çåï¼æ¯å¦è¯´ææ¬ï¼å¾çï¼æé®ççï¼è¿äºä¸è¥¿çå®ä¹é½éè¦æ¾å°layoutæ件夹ä¸é¢ãè¿ä¸ªæ件就æ¯ä¸é¢ä»£ç ä¸åå°çé£ä¸ªappwidgetlayoutã
第äºæ¥ï¼
å¨layoutæ件夹ä¸é¢æ°å»ºä¸ä¸ªappwidgetlayout.xmlæ件ï¼å¨è¿ä¸ªæ件ä¸æè¿°äºappWidgetçæ§ä»¶åå¸å±ççä¿¡æ¯ï¼å°±åæ们平常å建çä¸ä¸ªactivityçå¸å±æ件没ä»ä¹ä¸¤æ ·ï¼å 为åªæ¯ç®åçæ¼ç¤ºï¼æ以ä»
ç¨ä¸ä¸ªææ¬åä¸ä¸ªæé®ãxmlçå
容å¦ä¸ï¼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:id="@+id/txtapp" android:text="test" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="#ffffff"></TextView>
<Button android:id="@+id/btnSend" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Send"></Button>
</LinearLayout>
第ä¸æ¥ï¼
æ¢ç¶appWidgetä¸åå¨æé®ççæ§ä»¶ï¼é£ä¹å°±è¯å®å°ä¸äºå¤çè¿äºæ§ä»¶äºä»¶çå¤ç代ç å¦ãè¿äºä»£ç 被æ¾å¨ä¸ä¸ªç»§æ¿äºAppWidgetProviderçç±»ä¸ï¼å¨æ¬ä¾åä¸ææ°å»ºäºä¸ä¸ªAppWidgetçç±»ï¼è¯¥ç±»ç»§æ¿äºAppWidgetProviderï¼ä»¥åææçAppWidgetä¸é¢çæ§ä»¶äºä»¶é½ä¼å¨è¿ä¸ªç±»ä¸å¤çãçä¸ä¸ç±»çå
容ï¼
public class AppWidget extends AppWidgetProvider
{
private final String broadCastString = "com.qlf.appWidgetUpdate";
/**
* å é¤ä¸ä¸ªAppWidgetæ¶è°ç¨
* */
@Override
public void onDeleted(Context context, int[] appWidgetIds)
{
super.onDeleted(context, appWidgetIds);
}
/**
* æåä¸ä¸ªappWidget被å é¤æ¶è°ç¨
* */
@Override
public void onDisabled(Context context)
{
super.onDisabled(context);
}
/**
* AppWidgetçå®ä¾ç¬¬ä¸æ¬¡è¢«å建æ¶è°ç¨
* */
@Override
public void onEnabled(Context context)
{
super.onEnabled(context);
}
/**
* æ¥å广æäºä»¶
* */
@Override
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
}
/**
* å°è¾¾æå®çæ´æ°æ¶é´æè
å½ç¨æ·åæ¡é¢æ·»å AppWidgetæ¶è¢«è°ç¨
* */
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
}
}
å个æ¹æ³çä½ç¨å¤§å®¶ä¸çä¸é¢ç注éå°±æç½äºãæ们ææ¶ä¸éè¦å®ç°éé¢çæ¹æ³ã
第åæ¥ï¼
å¨AndroidManifest.xmlä¸å®ä¹ä¸äºå建AppWidgetå¿
è¦çä¸è¥¿ï¼å
ç代ç ï¼
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
package="com.qlf.widget" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="AppWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget01" />
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
å¯ä»¥çå°æ们å¨é
ç½®æ件éé¢å®ä¹äºä¸ä¸ªreceiverï¼ä»çååæ¯ä¸é¢å建å¤çæ§ä»¶ä»£ç çé£ä¸ªç±»ï¼ä¸é¢é£ä¸ªintent-filterä¸çactionæ¯ç³»ç»èªå¸¦çç¨äºæ´æ°ææappwidgetç广æå¨ä½ãç¶åmeta-dataæ ç¾æ¯ä¸ä¸ªæè¿°æ们å建appwidgetçå
æ°æ®ï¼é£ä¸ªandroid:name="android.appwidget.provider"æ¯åºå®çï¼android:resource="@xml/appwidget01"æå®å建çappWidgetçæè¿°ä¿¡æ¯çä½ç½®ãè¿æ ·ç¨åºå°±ç¥éå°åªéå»åå§åè¿äºappWidgetå¦ã
ç»è¿ä¸é¢å个æ¥éª¤ï¼ææ³æ¨å·²ç»è½å¤æåå¨æ¡é¢ä¸æ·»å å°å·¥å
·äºï¼ææå°±æ¯æ们æåé¢ååºçæ ·åã