【天气APP】之桌面时钟witget组件
桌面时钟之组件开发:
整个流程例如以下:
下载地址demo:www.github.com/xufeifandj
service+组件+广播进行后台实时更新时间
(一)开机广播监听开机启动service服务启动后。马上动态注冊一个广播去监听时间发生变化。
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_TICK); //时间发生改变
intentFilter.addAction(Intent.ACTION_TIME_CHANGED); //
intentFilter.addAction(Intent.ACTION_DATE_CHANGED); //日期改动
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED); //时区改动
this.getBaseContext().registerReceiver(widgetsUpdateReceiver, intentFilter);
(二) 广播监听到有时间发生改变,就可以进行更新组件
class UpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
updateWidget();
}
}
//发送广播去更新组件就可以
public synchronized void updateWidget() {
sendBroadcast(new Intent("com.android.FERRIS_UPDATE_WIDGET"));
}
(3) WeatherWidget_time 继承于 AppWidgetProvider事实上也是一个广播。
我们在这里注冊了一些更新的action
//组件发生改变时候。进行更新
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++) {
RemoteViews updateView = lewaBuildUpdate(context, appWidgetIds[i],false,true,true);
appWidgetManager.updateAppWidget(appWidgetIds[i], updateView);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onReceive(final Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){//开机启动
//启动时间后台服务。动态去注冊广播
Intent service=new Intent(context, WidgetTimeService.class);
context.startService(service);
updateTimeAlarm(context); //并去更新一下时钟
}else if(intent.getAction().equals("com.android.FERRIS_UPDATE_WIDGET")){ //监听到时间变化。更新wiget
updateTimeAlarm(context);
}
super.onReceive(context, intent);
}
(4)更新时间
public synchronized void updateTimeAlarm(Context context){
// AppWidgetManager appWidgetManger = AppWidgetManager
// .getInstance(context);
// int[] appIds = appWidgetManger.getAppWidgetIds(new ComponentName(
// context, WeatherWidgetV5_time.class));
//
ComponentName provider = new ComponentName(context,context.getPackageName()+ ".WeatherWidget_time");
AppWidgetManager gm = AppWidgetManager.getInstance(context);
int[] appWidgetIds;
appWidgetIds = gm.getAppWidgetIds(provider);
for (int i = 0; i < appWidgetIds.length; i++) { //遍历进行更新
RemoteViews updateView = lewaBuildUpdate(context, appWidgetIds[i],false,true,true); //更新UI组件。參数为分别为日期 星期 等。是否更新
gm.updateAppWidget(appWidgetIds[i], updateView);
}
}
【天气APP】之桌面时钟witget组件的更多相关文章
- Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!
Android Widget小组件开发(一)--Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的! PS:学习自某网站(不打广告) 这个小组件相信大家都很熟悉吧,以前的墨迹天气 ...
- Android经典项目开发之天气APP实例分享
原文:Android经典项目开发之天气APP实例分享 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mzc186/article/details/5 ...
- vue练手项目——桌面时钟
用vue实现一个简单的网页桌面时钟,主要包括时钟显示.计时.暂停.重置等几个功能. 效果图如下,页面刚进来的时候是一个时钟,时钟上显示的时.分.秒为当前实际时间,点击计时器按钮后,页面变成一个计时器, ...
- vue3系列:vue3.0自定义全局弹层V3Layer|vue3.x pc桌面端弹窗组件
基于Vue3.0开发PC桌面端自定义对话框组件V3Layer. 前两天有分享一个vue3.0移动端弹出层组件,今天分享的是最新开发的vue3.0版pc端弹窗组件. V3Layer 一款使用vue3.0 ...
- 利用react native创建一个天气APP
我们将构建一个实列程序:天气App,(你可以在react native 中创建一个天气应用项目),我们将学习使用并结合可定义模板(stylesheets).盒式布局(flexbox).网络通信.用户输 ...
- [Android]天气App 2 项目搭建
对于天气App,为了简化一些功能,暂时模仿MUUI系统提供的那个App. 本项目需要引入本人经常使用的一个工具库DroidTool,这个是本人根据工作中,收集到一些工具类,下载地址. ...
- DB天气app冲刺二阶段第十天
昨天困到不行了 所以就写了那么几句..所以今天好好写写了要.. 今天的收获了一个很重要的问题 就还是api接口的事情,以前的那个接口虽然能用但是总是不稳定,今天由决定百度的一下然后就发现了一个很好用的 ...
- DB天气app冲刺第十天
好了 这是第十天了,按照白板任务上的来说的话,今天没有完成,所以等一下还要继续看看今天能不能把他做完,今天出的问题在于我又自己调整了一下UI设计,因为发现以前的设计发面有重复,浪费了屏幕.所以还不如省 ...
- DB天气app冲刺第六天
更改计划 以前是准备完全自己写一个天气App 而且加上自己已经成功的做了一个安卓开发的小例子了,就感觉可以做的出来了.结果这五天证明自己一开始的思路就错了.所以上次跟别的同学问了一下.看了一下他们的方 ...
随机推荐
- Ubuntu 安装软件和centos 对比命令
之前都是使用Redhat 或者Centos 等rpm的linux ,开始使用ubuntu 很不习惯 1. 安装命令Centos : yum install httpd ...
- Python列表插入字典(转)
https://blog.csdn.net/qq_29721419/article/details/70310183
- VB.NET中文双引号的处理方法
相信朋友们也都碰到了这样的问题了,VS的IDE会不分青红皂白的把中文双引号变成英文的双引号,当然可以通过关闭自动重排功能来回避这个问题,但不是一个好的解决办法,以下这个方式不错: 如果在实际的使用中我 ...
- Linux常用Office办公软件
1.WPS Office是由金山软件股份有限公司自主研发的一款办公软件套件,可以实现办公最常用的文字.表格.演示等多种功能.免费提供海量的在线存储空间及文档模板.支持阅读和输出PDF文件.全面兼容Mi ...
- 2018 NOIP备战计划
2018 NOIP目标 (1)刷完紫书数论习题 (2)听51nod讲座和习题,根据其知识结构来备战. (3)刷完紫书动规 (4)初赛前两个星期左右开始复习 刷紫书动规的时候感觉偏难,进步缓慢.应该自己 ...
- R中读取文件,找不到路径问题 No such file or directory
R中读取文件,找不到路径问题 No such file or directory 近日,读取文件时.出现例如以下问题 > passenger = read.csv('internationa ...
- RvmTranslator6.0
RvmTranslator6.0 eryar@163.com 1. Introduction RvmTranslator can translate the RVM file exported by ...
- 深入解析开源项目之Universal-Image-Loader(二)硬盘---缓存篇
文件命名: FileNameGenerator,HashCodeFileNameGenerator,Md5FileNameGenerator package com.nostra13.universa ...
- C#与Linux守护进程
用C#编写Linux守护进程 如果要在Red Hat Enterprise Linux上将.NET Core进程作为后台进程运行,则可以创建自定义systemd单元.今天我将为.NET Core编 ...
- 11.Axis客户端接收不同参数类型
转自:http://www.guance.com/708.html axis只支持简单类型的返回值.在这里逐一介绍axis的各种返回值接受. 1. axis接受基本类型,如int, string等 引 ...