很簡單的widget,網路上也有一些教學
不過不知道為什麼
總是會有一些錯誤
經過我三天的debug終於完成(我比較弱...)
而在網路上很多人都有開放原始碼.但是卻都沒有完整的解說... 所以在這邊 跟大家分享我的源使碼
成果圖:
配置長這樣:
首先必須使用小畫家OR繪圖軟體 繪製兩張圖
並且命名: wordcup 根 icon
存放於drawable的每一個資料夾內
由於是在網路上搜尋到世界杯倒數的計時器...恩 ..因此很順理成章的拿這個來改
MAGIC_ENDWORDActivity.java:
package Resion.com; //這是我的包的名子.你可以改成你的
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;
public class MAGIC_ENDWORDActivity extends AppWidgetProvider {
/** Called when the activity is first created. */
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
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,MAGIC_ENDWORDActivity.class);
}
public void run() {
Date date = new Date();
Calendar calendar = new GregorianCalendar(2012,Calendar.JUNE,04); //可以設定自己想要的日期
long days = (((calendar.getTimeInMillis()-date.getTime())/1000))/86400; //由於匯出都是秒.所以需要除以86400.讓他變成以天來顯示
remoteViews.setTextViewText(R.id.wordcup," "+days+" ");
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/wordcup"
>
<TextView
android:id="@+id/wordcup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="120px" //可以改字體大小
android:textColor="#ff0000" //字體顏色
/>
</LinearLayout>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, WidetDemo!</string>
<string name="app_name">DaysToWorldCup</string>
</resources>
然後在res底下創一個資料夾叫做 xml 並請再創一個layout 叫做:widget_provider.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="280dip" //寬
android:minHeight="50dip" //高
android:updatePeriodMillis="10000" //更新頻率,避免改太小會耗電
android:initialLayout="@layout/main"
/>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Resion.com"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="MAGIC_ENDWORDActivity"
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/widget_provider"
/>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
然後長按桌面
點選小工具
選擇daytoworldcup
完成!!
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。