Android Launcher 开发研究学习(3)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:background="@drawable/worldcup"   android:orientation="vertical" >   <TextView     android:id="@+id/babybirthday"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/message"     android:textSize="12px"     android:textColor="#ff0000" /> </LinearLayout>

>>4、修改程序自动生成的清单文件。在AndroidManifest.xml中,声明上述的AppWidgetProvider的子类是一个Receiver,并且:

(1)、该Receiver的intent-filter的Action必须包含“android.appwidget.action.APPWIDGET_UPDATE”;

(2)、该Receiver的meta-data为“android.appwidget.provider”,并用一个xml文件来描述布局属性。

<application   android:allowBackup="true"   android:icon="@drawable/ic_launcher"   android:label="@string/app_name"   android:theme="@style/AppTheme" >   <receiver     android:name=".MainActivity"     android:label="@string/app_name" >     <intent-filter>       <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /><!--广播接收过滤器-->     </intent-filter>     <meta-data       android:name="android.appwidget.provider"       android:resource="@xml/AppWigdetProvider_Provider" /><!--AppWidgetProvider引用的Provider文件-->   </receiver> </application>

运行程序:进入WIDGETS页面,可将Widget添加到HOME页

在AppWidgetProvider类中,还有其它相关的方法

public class WidgetProvider extends AppWidgetProvider { // 每接收一次广播消息就调用一次,使用频繁 public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); } // 每次更新都调用一次该方法,使用频繁 public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); } // 每删除一个就调用一次 public void onDeleted(Context context, int[] appWidgetIds) { super.onDeleted(context, appWidgetIds); } // 当该Widget第一次添加到桌面是调用该方法,可添加多次但只第一次调用 public void onEnabled(Context context) { super.onEnabled(context); } // 当最后一个该Widget删除是调用该方法,注意是最后一个 public void onDisabled(Context context) { super.onDisabled(context); } }

AppWidget本质上是一个AppWidgetHostView;

Android Launcher 开发研究学习

AppWidgetProvider definition
meta-data resource to provider.xml
provider xml to layout.xml
create AppWidgetInfo transact();

Launcher和AppWidget交互流程如下:

Launcher 启动,开始监听

Service send a broadcast

myApp 接收到广播,执行onUpdate方法

onUpdate方法回传RemoteViews给Service

Service改变Host,updateAppWidget

Launcher监听到,更新Appwidget

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/73f7995354712db011d6e1f9af2c5888.html