可以参考下面的demo:按照上面的步骤:
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/wordcup" android:textSize="28px" android:textColor="#ff0000" android:text="@string/hello_world" /> </RelativeLayout>
在res下新建xml文件夹,然后仙剑widget文件:
注意下面android:initialLayout=""添加布局文件
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="50dip" android:minHeight="50dip" android:updatePeriodMillis="1000" android:initialLayout="@layout/main"> </appwidget-provider>
然后实现继承AppWidgetProvider的类:
package wid; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Timer; import java.util.TimerTask; import com.example.androidwidgetdemos1.R; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.widget.RemoteViews; public class widget extends AppWidgetProvider { @Override public void onDeleted(Context context, int[] appWidgetIds) { // TODO Auto-generated method stub super.onDeleted(context, appWidgetIds); } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub Timer timer=new Timer(); timer.scheduleAtFixedRate(new MyTime(context,appWidgetManager), 1,60000); super.onUpdate(context, appWidgetManager, appWidgetIds); } private class MyTime extends TimerTask{ RemoteViews remoteViews; AppWidgetManager appWidgetManager; ComponentName thisWidget; public MyTime(Context context,AppWidgetManager appWidgetManager){ this.appWidgetManager=appWidgetManager; remoteViews=new RemoteViews(context.getPackageName(),R.layout.main); thisWidget=new ComponentName(context,widget.class); } @Override public void run() { // TODO Auto-generated method stub Date date=new Date(); Calendar calendar=new GregorianCalendar(2015,06,11); long days=(((calendar.getTimeInMillis()-date.getTime())/1000))/86400; remoteViews.setTextViewText(R.id.wordcup,"world cup space "+days+" day !"); appWidgetManager.updateAppWidget(thisWidget, remoteViews); } } }
AndroidManifest.xml
<receiver android:name="wid.widget" 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/app_widget" /> </receiver>
android是这样调出Widget,在空白地方长按屏幕,然后弹出菜单(新版本没有弹出菜单了),即可以看到自己开发的Widget了,点击后即可以添加到桌面.