「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件

本篇将带你实现一个自定义评分星级组件,用户可以通过点击星星进行评分,并实时显示评分结果。为了让界面更具吸引力,我们还将添加一只小猫图片作为评分的背景装饰。

在这里插入图片描述


关键词
  • UI互动应用
  • 评分系统
  • 自定义星级组件
  • 状态管理
  • 用户交互

一、功能说明

该自定义评分星级组件允许用户点击星星进行评分,评分范围从 1 到 5 星。点击星星时,页面会更新显示当前评分。同时,界面上添加了一只可爱的猫咪图片来增添趣味性。


二、所需组件
  • @Entry@Component 装饰器
  • ColumnRow 布局组件
  • Image 组件用于显示猫咪图片
  • Text 组件用于显示评分结果
  • Button 组件用于用户交互
  • @State 修饰符用于状态管理
项目结构
  • 项目名称StarRatingApp
  • 自定义组件名称StarRatingPage
  • 代码文件StarRatingPage.etsIndex.ets

三、代码实现
// 文件名:StarRatingPage.ets// 定义评分页面组件
@Component
export struct StarRatingPage {@State currentRating: number = 0; // 当前评分maxRating: number[] = [1, 2, 3, 4, 5]; // 评分的最大星级数// 构建页面布局和组件build() {Column({ space: 20 }) { // 创建垂直布局容器,子组件间距为 20// 显示猫咪图片Image($r('app.media.cat')).width('30%').height('67%').margin({ bottom: 20 }).alignSelf(ItemAlign.Center);// 显示评分标题Text('请给猫咪评分:').fontSize(24).fontWeight(FontWeight.Bold).alignSelf(ItemAlign.Center);// 评分星星组件Row({ space: 10 }) {ForEach(this.maxRating, (star: number) => {Button(this.currentRating >= star ? '★' : '☆') // 根据评分状态显示实心或空心星星.fontSize(30).onClick(() => {this.setRating(star); // 点击星星时更新评分}).backgroundColor(Color.Transparent) // 背景透明.fontColor(this.currentRating >= star ? Color.Yellow : Color.Gray); // 设置选中与未选中颜色});}.justifyContent(FlexAlign.Center);// 显示当前评分结果Text(`评分: ${this.currentRating} / ${this.maxRating.length}`).fontSize(20).margin({ top: 20 }).alignSelf(ItemAlign.Center);}.padding(20).width('100%').height('100%').alignItems(HorizontalAlign.Center);}// 更新评分的方法private setRating(rating: number) {this.currentRating = rating; // 设置当前评分}
}
// 文件名:Index.ets// 导入评分页面组件
import { StarRatingPage } from './StarRatingPage'// 定义应用入口组件
@Entry
@Component
struct Index {build() {Column() {StarRatingPage() // 引用评分页面组件}.padding(20) // 设置页面内边距}
}

效果示例:用户点击星星即可评分,选中的星星会变为黄色,未选中的星星保持灰色。屏幕上会显示猫咪图片,评分体验更具趣味性。

在这里插入图片描述


四、代码解读
  • @State currentRating
    保存当前的评分值,点击星星时更新评分并触发 UI 重绘。
  • Button 组件
    用于实现星星图标的点击操作,点击时根据评分状态显示实心或空心星星。
  • setRating() 方法
    通过点击星星更新当前评分并实时反馈。

五、优化建议
  1. 添加评分重置功能:可在界面中加入“重置评分”按钮,让用户能重新选择评分。
  2. 增加动画效果:为星星点击添加轻微的缩放或颜色过渡效果,提升用户体验。
  3. 动态猫咪图片:根据评分展示不同状态的猫咪图片,例如高评分显示开心的猫咪,低评分显示伤心的猫咪。

六、相关知识点
  • 「Mac畅玩鸿蒙与硬件11」鸿蒙UI组件篇1 - Text 和 Button 组件详解
  • 「Mac畅玩鸿蒙与硬件12」鸿蒙UI组件篇2 - Image组件的使用

小结

本篇教程通过自定义评分星级组件的实现,演示了如何利用 ButtonText 组件实现评分功能,并通过状态管理动态显示评分结果。添加猫咪图片增强了界面的趣味性,为用户带来更好的交互体验。


下一篇预告

下一篇「UI互动应用篇9 - 番茄钟倒计时应用」将展示如何实现一个番茄钟倒计时应用,用户可以设置专注时间和休息时间的时长。


上一篇: 「Mac畅玩鸿蒙与硬件30」UI互动应用篇7 - 简易计步器
下一篇:「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/4907.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL表设计(三大范式 表的设计)

1.上讲约束复习: 1.NOT NULL 非空约束,被指定NOT NULL的列,值不允许为空(必填) 2. UNIQUE 唯一约束,这个列里的值在表中是唯一的,也就是说不能重复 3. PRIMARY KEY 主键约束,可以看做是NOT NULL和UNIQUE…

继承机制深度解析:从基础到进阶的完整指南

文章目录 1. 继承的概念及定义1.1 继承的概念:1.2继承的定义:1.2.1 定义格式1.2.2 继承基类成员访问方式的变化: 1.3继续类模板 2. 基类和派生类间的转换2.1 向上转换(Upcasting)2.2 向下转换(Downcasting&…

C++(类和对象-友元)

友元的作用 作用: 在C中,友元(friend)是一种特殊的类成员,它可以让一个函数或者类访问其他类的私有(private)和保护(protected)成员。 注意: 友元的使用应该谨…

ssm045基于jsp的精品酒销售管理系统+jsp(论文+源码)_kaic

毕业设计(论文) 精品酒销售管理系统 学 院 专 业 班 级 学 号 用户姓名 指导教师 完成日期…

解决return code from pthread_create() is 22报错问题

今天在处理芯片数据,在使用rma方法对数据进行预处理时报错,试了非常多的方法,记录一下。 可能时rma函数会涉及调用多线程的操作,这一过程会产生冲突。此错误表示在规范化过程中创建新线程时出现问题,特别是与 pthread_…

ChatPaper.ai - 3分钟读懂一篇论文的AI阅读助手

你是否曾经面对过这些困扰? 堆积如山的论文,不知从何读起 课堂笔记零零散散,复习时一头雾水 会议记录不完整,重要信息错过了 ChatPaper.ai就是为解决这些问题而生的智能助手。 地址:https://www.chatpaper.ai/zh …

0基础入门linux文件系统

目录 文件系统简介 1. 文件系统类型 2. 文件系统结构 3. 文件系统的主要功能 4. 文件系统的使用 5. 文件系统的维护 6. 注意事项 简单举例 机械硬盘 物理结构介绍​编辑 CHS寻址 逻辑结构介绍 LBA寻址法 文件系统与磁盘管理 Boot Block Data block inode block…

【docker入门】docker的安装

目录 Centos 7 添加docker 官方仓库到yum源 将 Docker 的官方镜像源替换为国内可以的 Docker 镜像源 安装docker 配置docker加速源 Ubuntu 创建 gpg key 目录 下载 gpg key 添加国内可用镜像源到 系统的 APT 仓库中 安装docker 配置加速源 Centos 7 添加docker 官方仓…

HTML前端页面设计静态网站-仿百度

浅浅分享一下前端作业&#xff0c;大佬轻喷~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>百度&#xff08;伪&#xff09;</title><style>body {margin: 0;padding: 0;}.top-bar {dis…

C++虚表和虚基表

C虚表和虚基表 文章目录 C虚表和虚基表1.虚表/虚函数表(vtable)1.1概念1.2工作机制1.3虚表的特性 2.虚基表&#xff08;vbtable&#xff09;2.1概念2.2工作机制2.3虚基表的特性 3.深入认识虚基表3.1菱形继承对象模型3.2菱形虚拟继承对象模型 4.深入认识虚表4.1含有虚函数的类对…

网络安全求职指南_看完这篇就足够了~

概述 之前的文章给大家分析了安全行业目前的发展趋势、安全防御和渗透攻击两端不同的技术栈需求。在这篇文章里面&#xff0c;我们聚焦以下常见的安全行业求职和职业发展问题&#xff1a; 安全行业如何区分&#xff1f;安全岗位到底有哪些&#xff1f;不同安全岗位的技术需求…

python: Parent-child form operations using ttkbootstrap

# encoding: utf-8 # 版權所有 2024 ©塗聚文有限公司 # 許可資訊查看&#xff1a;言語成了邀功的功臣&#xff0c;還需要行爲每日來值班嗎&#xff1f; # 描述&#xff1a; 主、子表單 窗體傳值 Parent-child form operations # Author : geovindu,Geovin Du 塗聚文. …

能让企业“脱胎换骨”的局域网电脑监控软件,有哪些?

老板们&#xff0c;是不是发现现在员工们在上班时间玩得那叫一个欢&#xff0c;而工作却被丢在一边&#xff1f;别愁啦&#xff01;今天就给各位带来一份超赞的局域网电脑监控软件指南&#xff0c;这就像是给企业配上了 “超级放大镜”&#xff0c;员工的一举一动都能看得清清楚…

什么是计算机视觉算法?——深度剖析背后的技术与应用

计算机视觉&#xff08;Computer Vision&#xff09;作为人工智能的重要分支&#xff0c;正在逐渐改变我们的生活。从人脸识别到自动驾驶&#xff0c;从医疗影像诊断到视频监控&#xff0c;计算机视觉的应用无处不在&#xff0c;而支撑这一切的正是计算机视觉算法。那么&#x…

产品如何3D建模?如何根据使用场景选购3D扫描仪?

随着科技的飞速发展&#xff0c;3D模型已从昔日的小众应用转变为各行各业不可或缺的利器。在文博、电商、家居、汽车、建筑及游戏影视等众多领域&#xff0c;3D模型以其直观、真实的视觉体验发挥着至关重要的作用。它不仅使用户能深入了解产品的外观、结构与功能&#xff0c;还…

信息安全工程师(79)网络安全测评概况

一、定义与目的 网络安全测评是指参照一定的标准规范要求&#xff0c;通过一系列的技术、管理方法&#xff0c;获取评估对象的网络安全状况信息&#xff0c;并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高…

Windows 系统上配置 SSH 密钥验证,实现无密码登录

Windows 系统上配置 SSH 密钥验证&#xff0c;实现无密码登录 在日常工作中&#xff0c;使用密码登录远程云服务器往往让人感到繁琐。云服务器的密码通常较长&#xff0c;难以记忆&#xff0c;每次登录都需要反复输入&#xff0c;既不便捷也影响效率。此外&#xff0c;由于网络…

俯仰 (pitch) 偏摆 (yaw) 翻滚 (roll)

pitch()&#xff1a;俯仰&#xff0c;将物体绕X轴旋转&#xff08;localRotationX&#xff09; yaw()&#xff1a;航向&#xff0c;将物体绕Y轴旋转&#xff08;localRotationY&#xff09; roll()&#xff1a;横滚&#xff0c;将物体绕Z轴旋转&#xff08;localRotationZ&…

es数据同步(仅供自己参考)

数据同步的问题分析&#xff1a; 当MySQL进行增删改查的时候&#xff0c;数据库的数据有所改变&#xff0c;这个时候需要修改es中的索引库的值&#xff0c;这个时候就涉及到了数据同步的问题 解决方法&#xff1a; 1、同步方法&#xff1a; 当服务对MySQL进行增删改的时候&…

从0开始学习Linux——Yum工具

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 上一个章节我们简单了解了Linux中常用的一些文本编辑器&#xff0c;本次教程我们将学习yum工具。 一、Yum简介 Yum&#xff08;全名…