自带天气APP太臃肿?手写一个换掉它(2)

作者分享了如何改造一个轻量的天气应用程序,添加实时天气背景颜色,根据天气变化切换,以及使用HarmonyOSAPI进行状态栏和导航栏颜色同步。还介绍了颜色配置功能和动画设计,以及后续的bug修复和性能优化计划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《自带天气APP太臃肿?手写一个换掉它》中,打造了一个基本可以用的天气APP,实现了实时位置天气查询,搜索添加指定区域等功能。当然也实现了亮色和暗色两种主题,可以根据手机的主题自动切换(这里被获取darkMode坑的不行,不能在每个页面都获取,只有一个页面的回调函数被调用,最终只能塞全局变量里面了),但是我对这个颜色其实是不太满意的。虽然本意是想打造一个轻量,简约的天气APP,但是现在的感觉太单调了,尤其是实时天气那里。于是我想着给这个实时天气加个背景颜色,一种天气对应一种颜色,让这个天气APP更好看一些。

image-20240425205823391.png

经过一番思考后,我决定开始动手修改。

首先,我想一进来看到的就是实时天气,不想看到下面的那些24小时天气,7日天气什么的,第一眼印象就是要简单,简约,如果有需要看下面那些信息,就往上滑动就行了,这个实现起来比较简单,将实时天气的高度设置成100%就行了。

image-20240425211730724.png

嗯,看着简单了许多。接下来就是设置背景色了,背景需要根据不同天气显示不同颜色,我加了一个枚举类,里面设置了大致的几种天气场景和颜色,只要在查询天气的时候根据天气情况去找到对应的场景枚举返回给页面显示就行了,还有把状态栏和导航栏的颜色换掉,和背景色一致,让整体更加沉浸,查阅资料,harmonyos提供了这样的API可以直接用,不过状态栏和导航栏的前景色API6就不能设置了,得API8才行,状态栏和导航栏的前景色就先放着。

image-20240425214118334.png

看起来好一些了,然后需要设置其他场景的背景色,但是这个调色比较麻烦,因为电脑上预览的颜色和手机上显示的颜色有一点色差,每次改一个颜色编译一下很费劲,于是乎我想做一个颜色配置的页面,可以直接在手机上实时预览调整,这样效率会高很多,预览页面需要满足以下几点:

  • 可以选择不同的天气场景,包含晴天,多云,阴天,雨天,雪天,雾天,冰雹,扬尘这几类
  • 可以选择白天还是夜晚,白天和夜晚可以设置不同的背景色
  • 可以针对红,绿,蓝三基色配置
  • 可以保存配置好的颜色,优先使用自定义的颜色,如果没有自定义,则使用默认的背景色
  • 上半部分实时预览配置效果

天启APP-背景色配置-1714056786622-2.png

上半部分的实时预览只要把天气页面的组件拿过来用就可以了,下半部分就是几个按钮和三基色的slider,也比较简单,实现效果如下:

在这里插入图片描述

到这,背景色配置功能就好了。

接下来,就是给各个场景加上动画,设想了这几种场景的动画

  • 晴天:白天一个发光的太阳,夜晚一个发光的月亮和一些随机的星星
  • 多云:白天几个随机的云彩缓慢移动,夜晚几个随机的云彩缓慢移动和一些随机的星星
  • 阴天:没有什么东西,就纯背景色
  • 雨天:下落的雨水,矩形,速度比较快
  • 雪天:下落的雪花,圆形,速度比较慢
  • 雾天:没有什么东西,就纯背景色
  • 冰雹:下落的冰块,菱形,速度中等
  • 扬尘:没有什么东西,就纯背景色

还有就是让布局撑到状态栏和导航栏,不然下雨下雪这种不是从屏幕最上方开始的,就很怪,做好后就是这样

在这里插入图片描述

应用到天气页面后,就是这样

在这里插入图片描述

天气背景这块大致就这么多了,后面主要就是小修小补的了,修复BUG,还有解决性能的问题。本来就是要做一个轻量的APP,所以功能上变动不会太大了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值