桌面的一个时间的小控件,第一次写,纪念找工作的无聊时光。感谢每一个看过的博文,和看我的博文。
首先布局文件只需要一个textview
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示时间"
/>
真正的控件方法需要
public class WidgetProvider extends AppWidgetProvider{
/**
* 移除的方法
* @描述:
* @作者: Android - sen
* @创建日期: 2016年8月6日 下午3:33:49
*/
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
/**
*
* @描述:最后一个
* @作者: Android - sen
* @创建日期: 2016年8月6日 下午3:34:03
*/
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
context.stopService(new Intent(context,TimerServier.class));
}
/**
* 添加到屏幕上执行
* @描述:
* @作者: Android - sen
* @创建日期: 2016年8月6日 下午3:34:32
*/
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
context.startService(new Intent(context,TimerServier.class));
}
/**
*
* @描述:
* @作者: Android - sen
* @创建日期: 2016年8月6日 下午3:34:56
*/
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onReceive(context, intent);
}
还需要一个Service类来不断的更新时间
public class TimerServier extends Service{
private Timer timer;
private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
updateViews();
}
}, 0,1000);
}
public void updateViews(){
String time=sdf.format(new Date());
RemoteViews rv=new RemoteViews(getPackageName(),R.layout.width);
rv.setTextViewText(R.id.tv, time);
AppWidgetManager manager=AppWidgetManager.getInstance(getApplicationContext());
ComponentName cn=new ComponentName(getApplicationContext(), WidgetProvider.class);
manager.updateAppWidget(cn, rv);
}
@Override
public void onDestroy() {
super.onDestroy();
timer=null;
}
还要新建一个XML文件夹新建一个
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="40dp"
android:minWidth="100dp"
android:initialLayout="@layout/width"
android:updatePeriodMillis="8640000"
>
</appwidget-provider>
然后再清单文件中注册
这个是AppWidgetProvider在清单文件中的注册
resource就是新建XML中的文件
<receiver android:name="com.example.animation360.widget.WidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widgetconfig" />
</receiver>