当前位置: 首页 > news >正文

【HarmonyOS】天气预报 UI 的基本实现

文章目录

  • 一、和风天气数据
    • 1、数据请求
    • 2、数据获取
  • 二、UI 界面实现
    • 1、24小时内温度
    • 2、多日预报温度
    • 3、空气质量 & 日升日落
    • 4、本地内容
    • 5、菜单

一、和风天气数据

1、数据请求

本项目使用HTTP请求实现数据请求。和风天气API

例如:对于获取每日天气预报,使用 WebAPI 的 API key。

每日天气预报API,提供全球城市未来3-30天天气预报,包括:日出日落、月升月落、最高最低温度、天气白天和夜间状况、风力、风速、风向、相对湿度、大气压强、降水量、露点温度、紫外线强度、能见度等。

  1. 请求路径
/v7/weather/{days}
      request1.request(`https://devapi.qweather.com/v7/weather/10d?location=101010100&key=xxxx&gzip=n`,{method: http.RequestMethod.GET})// xxxx:即你的 API key
// location:后面是城市 id,需要根据输入城市查询,可以参考和风里面的城市搜索

2、数据获取

对于上例,根据和风天气的返回值自己定义需要的数据和数据类型。

{"code": "200","updateTime": "2021-11-15T16:35+08:00","fxLink": "http://hfx.link/2ax1","daily": [{"fxDate": "2021-11-15","sunrise": "06:58","sunset": "16:59","moonrise": "15:16","moonset": "03:40","moonPhase": "盈凸月",···},···}

在下面是一些数据的基本信息:

code 请参考状态码
updateTime 当前API的最近更新时间
fxLink 当前数据的响应式页面,便于嵌入网站或应用
daily.fxDate 预报日期
daily.sunrise 日出时间,在高纬度地区可能为空
daily.sunset 日落时间,在高纬度地区可能为空
daily.moonrise 当天月升时间,可能为空
daily.moonset 当天月落时间,可能为空

根据需要获取数据存储:

export class DailyViewModel {public Date: string = ''public fxDate: string = '' public sunrise: string = '' //日出public sunset: string = '' //日落public tempMax: string = '' //最高public tempMin: string = '' //最低public uvIndex: string = '' //紫外线public text: string = ''
}

之后的使用即根据要显示的 UI 界面对应带入即可。

二、UI 界面实现

1、24小时内温度

在这里插入图片描述

使用 List 组件实现,设置.listDirection(Axis.Horizontal)实现组件的横向滑动。ForEach实现每个ListItem的循环渲染。

之后根据如"text": "晴",所显示的天气更换天气图标即可,即用条件渲染实现。

2、多日预报温度

在这里插入图片描述

与24小时内温度同理:由从API获取到的数据进行UI 渲染,可以根据自身喜好更改显示的内容,使用 List 组件实现。

3、空气质量 & 日升日落

在这里插入图片描述

使用 Gauge 组件画图:

          Gauge({value:this.AqiViewModel.aqi,min:0,max:500})
// this.AqiViewModel.aqi是指向的内容.startAngle(210).endAngle(150)
// 以上是环形的起始和终止.colors([[0X00FF00, 0.1],[0xFFFF00,0.1],[0xFF6100,0.1],[0xFF0000,0.1],[0xA020F0,0.2],[0x8B0000,0.4]])
// 颜色区间.strokeWidth(5).description(null).trackShadow(null)

同时可以改变箭头内容,根据华为 API 进行修改。

在这里插入图片描述

本图即根据内容修改指向标,通过该属性进行修改

 .indicator({ space: 10, icon: $r('app.media.Timely_sun') })

4、本地内容

在这里插入图片描述

这个即使用Text组件即可实现,搭配基本的容器组件。

5、菜单

依据绑定的内容实现。

在这里插入图片描述

                .bindMenu([{value: '添加城市',action: () => {···}},{value: '管理城市',action: () => {···}},])

其余界面即根据组件导航和路由实现,同时注意一些蚕食的传递实现。

http://www.dtcms.com/a/360111.html

相关文章:

  • KingbaseES JDBC 驱动详解:连接、配置与最佳实践
  • docker,数据卷
  • ES6 面试题及详细答案 80题 (13-21)-- 数组与字符串扩展
  • 【71页PPT】工业40及智能制造解决方案(附下载方式)
  • (LeetCode 每日一题) 36. 有效的数独 (数组、哈希表)
  • 决胜千里之外:服务器及硬件项目标书制作全流程与避坑指南
  • 基于OpenCv做照片分析应用一(Java)
  • More Effective C++ 条款20:协助完成返回值优化(Facilitate the Return Value Optimization)
  • MySQL—— 概述 SQL语句
  • obdumper和obloader迁移OceanBase业务库(一):实施手册
  • 项目-云备份
  • 自然语言处理NLP:嵌入层Embedding中input_dim的计算——Tokenizer文本分词和编码
  • Qt Demo之 deepseek 帮我写的关于双目标定的小界面
  • libmodbus移植
  • 面试问题详解十三:Qt 多线程同步【QReadWriteLock】讲解
  • Qt-Advanced-Docking-System: 一个基于 Qt 框架的高级停靠窗口系统
  • Qt libcurl的下载、配置及简单测试 (windows环境)
  • 没有广告,纯净好用,功能强大的本地和网络文件管理器
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day12
  • RocketMQ5.0+保姆级单点Docker部署教程
  • 从零构建中间件:Tower 核心设计的来龙去脉
  • 当代科学(范畴大辩论) 的学科分科(论据)的要素论(论点)及方法论(论证):边缘处理
  • return 语句使用指南(c++)
  • 基于 YOLOv11n 的无人机航拍小目标检测算法学习
  • shell脚本第六阶段---三剑客之sed
  • Spring Cloud Alibaba Seata 分布式事务(六)
  • CPTS---Hospital
  • AliceVision相比于OpenMVG、Colmap有什么区别和特点
  • 计算机毕设选题:基于Python+Django实现电商评论情感分析系统
  • 嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例