简单的说一下怎么建立App Widget以及点击进入相应的Activity。
创建一个App Widget需要四个步骤:
一、在AndroidManifest中配置
在AndroidManifest中配置App Widget其实和写广播接收器一样:
<receiver android:name=".MyWidget">
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info"> //配置文件名
</meta-data>
</receiver>
二、添加App Widget的配置信息
在/res/xml文件夹下创建一个widget_info.xml的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider
android:minWidth="294dp"
android:minHeight="72dip"
android:initialLayout="@layout/widget"
xmlns:android="http://schemas.android.com/apk/res/android" />
三、添加App Widget布局
就是在桌面显示你widget的布局,和普通布局一样在/res/layout/创建widget.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="294dp"
android:layout_height="72dp"
android:background="@drawable/date_bg_gold"
android:gravity="left|center_vertical">
<TextView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/textName"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center">
</TextView>
</LinearLayout>
四、添加App Widget的类
package com.lrx.xiao_media;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class MyWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);
String name = "进入我的Media";
remoteView.setTextViewText(R.id.textName, name);
Intent intentClick = new Intent(context, MainActivity.class); //点击启动MainActivity
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intentClick, 0);
remoteView.setOnClickPendingIntent(R.id.textName, pendingIntent); //点击监听
appWidgetManager.updateAppWidget(appWidgetIds, remoteView);
}
}
可见,创建一个widget其实很简单,比我们正常的Activity只多了一个配置文件,其中在类中getActivity可以换成getService启动一个Service,还需要注意的一点是刷新widget时间,属性android:updatePeriodMillis表示更新频率,单位毫秒,但是有时候不刷新是因为android为了省电小于30分钟的刷新都会默认最小30分钟,所以需要我们启动一个Service去刷新时间,记得最好单独起一个线程去控制时间。