如何编写一个AppWidget?
-
编写AppWidget的布局xml界面。
-
编写AppWidget的元数据xml文件。
该xml中定义当前AppWidget使用的
初始化布局,以及初始化宽高。
70*n-30 -
编写AppWidget的控制器类。
要求该类继承自AppWidgetProvider.
重写父类的生命周期方法。 -
清单文件中配置该AppWidget。
<receiver android:name="com.example.android_day09_appwidget.MyAppWidget"> <intent-filter > <!-- 每个AppWidget都应该有这个action --> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> <!-- 每个AppWidget都应该有这个name --> <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_meta"/> </receiver>
AppWidgetProvider的生命周期
onEnable
onUpdate
onDeleted
onDisabled
涉及到的参数:
AppWidgetManager
appWidgetId
如何修改AppWidget中TextView的文字?
-
创建于AppWidget布局相同的RemoteViews对象。
-
对RemoteViews对象中的控件进行修改。
-
manager.updateAppWidget()方法更新AppWidget.
manager.updateAppWidget(ids,views);
manager.updateAppWidget(id,views);
如何给控件添加点击意图?
- 创建RemoteViews
- remoteViews.setOnClickPendingIntent() 告诉系统app:button pendingIntent
- manager.updateAppWidget();
如何点击按钮后更新AppWidget的界面?
1.编写AppWidget的控制器类
1 | package com.example.androidday09appweidght; |
2.编写AppWidget的元数据xml文件。
该xml中定义当前AppWidget使用的初始化布局,以及初始化宽高。
res/xml/new_app_widget_info.xml 70*n-30
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialKeyguardLayout="@layout/appwidght_main"
android:initialLayout="@layout/appwidght_main"
android:minHeight="40dp"
android:minWidth="250dp"
android:previewImage="@drawable/ic_launcher"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="86400000"
android:widgetCategory="home_screen" >
</appwidget-provider>
3.清单文件中配置该AppWidget
<receiver android:name="com.example.android_day09_appwidget.MyAppWidget">
<intent-filter >
<!-- 每个AppWidget都应该有这个action -->
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<!-- 每个AppWidget都应该有这个name -->
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_meta"/>
</receiver>
------------------------------
<receiver android:name="com.example.androidday09appweidght.MyAppWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="ACTION_UPDATE_TEXT_COLOR"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/new_app_widget_info" />
</receiver>
赞赏一下