HarmonyOS开发案例:【rating组件】

news/2024/9/25 13:24:26/

介绍

将引导开发者使用rating组件实现星级打分功能。

相关概念

  • [rating组件]:评分条,可根据用户判断进行打分。

环境搭建

软件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release及以上版本。
  • OpenHarmony SDK版本:API version 9及以上版本。

硬件要求

  • 开发板类型:[润和RK3568开发板]。
  • OpenHarmony系统:3.2 Release及以上版本。

环境搭建

完成本篇Codelab我们首先要完成开发环境的搭建,本示例以RK3568开发板为例,参照以下步骤进行:

  1. [获取OpenHarmony系统版本]:标准系统解决方案(二进制)。以3.2 Release版本为例:

  2. 搭建烧录环境。

    1. [完成DevEco Device Tool的安装]
    2. [完成RK3568开发板的烧录]
  3. 搭建开发环境。

    1. 开始前请参考[工具准备],完成DevEco Studio的安装和开发环境配置。
    2. 开发环境配置完成后,请参考[使用工程向导]创建工程(模板选择“Empty Ability”)。
    3. 工程创建完成后,选择使用[真机进行调测]。
    4. 鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

搜狗高速浏览器截图20240326151450.png

代码结构解读

本篇Codelab只对核心代码进行讲解,对于完整代码,我们会在gitee中提供。

HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿

├──entry/src/main/js                          // 代码区
│  └──MainAbility
│     ├──common
│     │  └──images
│     │     ├──star_focus_yellow.svg          // 前景图片
│     │     ├──star_half_yellow.svg           // 次级背景图片
│     │     └──star_nor.svg                   // 背景图片
│     ├──i18n
│     │  ├──en-US.json	                      // 英文国际化
│     │  └──zh-CN.json	                      // 中文国际化
│     ├──pages
│     │  └──index
│     │     ├──index.css                      // 星级打分页面样式
│     │	    ├──index.hml                      // 星级打分页面
│     │	    └──index.js                       // 星级打分页面逻辑
│     └──app.js                               // 程序入口
└──entry/src/main/resource                    // 应用静态资源目录

页面布局

界面主要由自定义星级打分和平均分等级两个部分组成。

本应用使用div组件用作外层容器,并将自定义星级组件和平均分等级分别放在两个div组件中。除此之外,自定义星级打分还使用了列表渲染,使用for循环一次渲染多个组件,onchange参数可以设置组件使用的事件响应方法,参数中的$idx则代表数组中的元素的索引值。

<!-- index.hml -->
<div class="container"><!-- 自定义打分组件--><div class="sub-container">...<rating for="{{ ratings }}" onchange="rateChange({{ $idx }})" class="rate" rating="3"></rating></div><!-- 平均分等级展示--><div class="sub-container-average">...<rating class="rate-avg" indicator="true" stepsize="0.1" rating="{{ avg }}"></rating>...</div>
</div>

为组件设计样式

自定义星级打分的rating组件还可以设置星星样式,需要设置以下三个参数:

  • star-background:背景图片,没被选中时使用的图片。
  • star-foreground:前景图片,完全被选中时使用的图片,或未被完全选中时左侧使用的图片。
  • star-secondary:次级背景图片,未被完全选中时右侧使用的图片。
/* index.css */
/* 自定义星级打分样式 */
.rate {star-background: url("/common/images/ic_star_nor.svg");star-foreground: url("/common/images/ic_star_focus_yellow.svg");star-secondary: url("/common/images/ic_star_half_yellow.svg");width: 140vp;height: 30vp;margin-bottom: 10vp;
}

数据处理

数据初始化,使用数组记录rating组件的分值,使用avg变量记录平均值。

// index.js
export default {data: {ratings: new Array(3, 3, 3),avg: 3},...
}

当rating发生变化时,根据索引值更改对应元素的数据,并重新计算平均值。

// index.js
rateChange(idx, event) {this.ratings.splice(idx, 1, event.rating);this.getAvg();
},
getSum(total, num) {return total + num;
},
getAvg() {const value = this.ratings.reduce(this.getSum) / this.ratings.length;this.avg = value.toFixed(1);
}

http://www.ppmy.cn/news/1445363.html

相关文章

(暗虫AI、一站式、酷盖、智言智语、靠谱AI)分享好用的ChatGPT

目录 1、暗虫AI 2、GPT中文站 - 一站式AI解决方案 3、酷盖AI实验室

Python常见数据结构

元组&#xff08;Tuple&#xff09;和列表&#xff08;List&#xff09;是Python中两种主要的序列类型&#xff0c;它们在功能上有许多相似之处&#xff0c;但也存在一些关键的区别&#xff1a; 可变性&#xff1a; 列表是可变的&#xff0c;这意味着你可以更改列表的内容&am…

【Harmony3.1/4.0】笔记七-选项卡布局

概念 当页面信息较多时&#xff0c;为了让用户能够聚焦于当前显示的内容&#xff0c;需要对页面内容进行分类&#xff0c;提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换&#xff0c;一方面提升查找信息的效率&#xff0c;另一方面精简用户单次获取到的…

HEVC/H.265视频编解码学习笔记–框架及块划分关系

前言 由于本人在学习视频的过程中&#xff0c;觉得分块单元太多搞不清楚其关系&#xff0c;因此本文着重记录这些分块单元的概念以及关联。 一、框架 视频为一帧一帧的图像&#xff0c;其编码的主要核心是压缩空间以及时间上的冗余。因此&#xff0c;视频编码有帧内预测和帧间…

小米消金持续发力,全面强化金融消费者权益保护措施

近年来&#xff0c;电信网络欺诈手段层出不穷&#xff0c;深度伪造等互联网技术被误用&#xff0c;导致欺诈行为更加隐蔽。重庆小米消费金融有限公司&#xff08;以下简称“小米消金”&#xff09;&#xff0c;作为一家持牌消费金融公司&#xff0c;深知保护消费者财产安全的重…

苹果公司大量订购电容按钮组件,或将用于即将推出的iPhone 16系列

据外媒报道&#xff0c;苹果公司已经从供应商订购了大量电容按钮组件&#xff0c;这些组件据称将用于即将推出的iPhone 16系列。根据《台湾经济日报》的一份报告&#xff0c;该订单包括系统级封装(SIP)模块&#xff0c;模块将用于将电容组件与两个Taptic Engine电机集成在一起。…

机器学习理论基础—聚类算法

机器学习理论基础—聚类算法 聚类的距离计算 聚类&#xff1a;物以类聚。将相似的样本聚集到一起&#xff0c;使得同一类簇的样本尽可能接近,不同类簇的样本尽可能远离。&#xff08;无监督算法&#xff09; 对于距离的定义&#xff1a;满足下面的四个特点 非负性同一性对称性…

在Docker中部署Java应用:Java版本隔离的实践案例

在Docker中部署Java应用&#xff1a;Java版本隔离的实践案例 人生就是一场又一场的相遇&#xff0c;一个明媚&#xff0c;一个忧伤&#xff0c;一个华丽&#xff0c;一个冒险&#xff0c;一个倔强&#xff0c;一个柔软&#xff0c;最后那个正在成长。 背景需求 在软件开发和部…