Android 桌面小组件Timer时钟使用场景
来源:互联网 发布:工业设计制图软件 编辑:程序博客网 时间:2024/04/29 00:41
首先新建一个Floder文件夹叫xml然后建一个appconfig.xml主要信息如下
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/activity_widget"
android:minHeight="40dp" 这里指的是最低高度
android:minWidth="100dp" 这里指最低宽度
android:updatePeriodMillis="86400000" > 这里是多久刷新一次秒
</appwidget-provider>
其次跟大家说下AppWidgetManager这个类
查看API知道主要方法有
onDeleted() Widget被从屏幕移除
onDisabled()
onEnabled()
onReceive()
@Overridepublic void onDisabled(Context context) {
// 最后一个wdiget从屏幕中移除
super.onDisabled(context);
context.stopService(new Intent(context,TimerService.class));
}
@Override
public void onEnabled(Context context) {
// 添加widget到屏幕
super.onEnabled(context);
context.startService(new Intent(context, TimerService.class));
然后创建一个TimerService用来执行后台的时间刷新
package com.weixin.service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import com.weixin.R;
import com.weixin.widget.WidgetProvider;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.RemoteViews;
public class TimerService extends Service {
private static final String TAG = "TimeService";
private Timer timer=null;
//时间格式化类
private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
//初始化
super.onCreate();
timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
updateViews();
}
//1秒刷新一次
}, 0, 1000);
Log.i(TAG, "---onCreate----");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "---onDestory----");
timer=null;
}
private void updateViews() {
// 将时间转字符串格式
String time=sdf.format(new Date());
RemoteViews rv=new RemoteViews(getPackageName(),R.layout.activity_widget);
//显示事件的TextView
rv.setTextViewText(R.id.tv_widget, time);
//获取桌面小组件的实例
AppWidgetManager manager=AppWidgetManager.getInstance(getApplicationContext());
//组件的名称
ComponentName cn=new ComponentName(getApplicationContext(), WidgetProvider.class);
//更新组件
manager.updateAppWidget(cn, rv);
}
}
最后别忘记在Androidmainfest.xml里面配置Service和WidgetProvider信息
<receiver android:name="com.weixin.widget.WidgetProvider" > <--自定义的WidgetProvider-->
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appconfig" />
</receiver>
<service android:name="com.weixin.service.TimerService" >
</service>
- Android 桌面小组件Timer时钟使用场景
- android桌面小组件(时钟)--widget初体验
- Android 桌面小组件AppWidget的使用
- Android桌面小组件的使用
- Android 使用Widget 添加桌面小组件
- Android-Widget桌面小组件
- Android桌面小组件:最简例子
- Android桌面小组件的命名空间
- 【J】Android-Widget桌面小组件
- <Android>桌面小组件实现过程
- Android 笔记 快捷方式 / 桌面小组件
- 初识widget桌面小组件
- 安卓桌面小组件
- android_Widget桌面小组件_Clock
- 实践--桌面小组件之天气小组件
- android小组件
- android widget小组件
- Android之场景桌面(二)----模拟时钟实现
- hibernate的分页+jsp小计+mysql建表+hql的使用
- 复习Java SE
- MySQL数据类型及sql模型
- jQuery选择器大全
- 解决Qt 5.7自带Creator在Ubuntu 16.04下不能输入中文的问题(fcitx输入框架)
- Android 桌面小组件Timer时钟使用场景
- 读取海量数据到文件并拆分排序
- 简单页面表单
- javascript语句条件语句,循环语句,跳转语句
- 设计模式--工厂模式
- eclipse 增加JPA 功能,由数据表自动生成实体
- Docker Remote api(一)
- [美剧赏析] 权力的游戏<Game of Thrones>完全赏析 (53-54)
- Access restriction: The type 'ProxyGenerator' is not API --Eclipse MyEclipse