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

「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器

本篇将带你实现一个随机颜色变化器应用。用户点击“随机颜色”按钮后,界面背景会随机变化为淡色系颜色,同时显示当前的颜色代码,页面还会展示一只猫咪图片作为装饰,提升趣味性。
在这里插入图片描述


关键词
  • UI互动应用
  • 随机颜色生成
  • 状态管理
  • 用户交互
  • 界面动态更新

一、功能说明

随机颜色变化器应用通过点击按钮生成一个淡色系随机颜色,实时更新界面背景,并显示颜色代码。用户可以在轻松互动中了解随机色彩的效果。


二、所需组件
  • @Entry@Component 装饰器
  • Column 布局组件
  • Text 组件用于显示当前颜色代码
  • Button 组件用于用户交互
  • Image 组件用于装饰
  • @State 修饰符用于状态管理

三、项目结构
  • 项目名称RandomColorApp
  • 自定义组件名称RandomColorPage
  • 代码文件RandomColorPage.etsIndex.ets

四、代码实现
// 文件名:RandomColorPage.ets@Component
export struct RandomColorPage {@State backgroundColor1: string = '#FFFFFF'; // 默认背景颜色为白色build() {Column({ space: 20 }) { // 创建垂直布局容器// 显示当前颜色代码Text(`当前背景颜色代码: ${this.backgroundColor1}`).fontSize(18).fontWeight(FontWeight.Bold).fontColor(Color.Black).alignSelf(ItemAlign.Center);// 显示猫咪图片装饰Image($r('app.media.cat')).width(85).height(100).borderRadius(5).alignSelf(ItemAlign.Center);// 更改颜色按钮Button('随机颜色').onClick(() => this.changeBackgroundColor()).fontSize(20).backgroundColor(Color.Gray).fontColor(Color.White).width('60%').alignSelf(ItemAlign.Center);}.padding(20).width('100%').height('100%').backgroundColor(this.backgroundColor1) // 动态更新背景颜色.alignItems(HorizontalAlign.Center);}// 随机生成淡色系颜色的方法private changeBackgroundColor() {const randomColor = this.generateLightColor();this.backgroundColor1 = randomColor;}// 生成淡色系颜色的逻辑private generateLightColor(): string {const r = Math.floor(Math.random() * 128 + 128); // 保证 R 值在 128-255 范围const g = Math.floor(Math.random() * 128 + 128); // 保证 G 值在 128-255 范围const b = Math.floor(Math.random() * 128 + 128); // 保证 B 值在 128-255 范围return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;}
}
// 文件名:Index.etsimport { RandomColorPage } from './RandomColorPage';@Entry
@Component
struct Index {build() {Column() {RandomColorPage() // 调用随机颜色页面}.padding(20)}
}

效果示例:用户点击“随机颜色”按钮后,界面背景会切换为一个淡色系颜色,同时显示背景颜色代码,页面中央展示一只可爱的猫咪图片装饰。

在这里插入图片描述


五、代码解读
  • 状态管理@State backgroundColor 用于存储当前的背景颜色,每次点击按钮时更新。
  • 随机颜色生成generateLightColor 方法通过生成高范围的 RGB 值,确保颜色保持淡色系。
  • 动态背景更新:背景颜色绑定到 backgroundColor 状态,实现实时更新界面背景。

六、优化建议
  1. 保存颜色历史:为用户提供已生成颜色的历史记录,便于参考和选择。
  2. 预设颜色选择:添加一些固定的淡色系颜色供用户直接选择。
  3. 动画效果:为颜色切换添加淡入淡出或渐变动画,提升视觉效果。

七、相关知识点
  • 「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text 和 Button 组件详解
  • 「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器

小结

通过随机颜色变化器的实现,你学会了如何动态生成和应用随机颜色,并通过状态管理实时更新界面背景。本应用简单有趣,是探索动态 UI 设计的绝佳切入点。


下一篇预告

在下一篇「UI互动应用篇15 - 猜数字增强版」中,我们将改进数字猜谜游戏,加入计分和记录历史功能,进一步提升用户体验。


上一篇: 「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
下一篇: 「Mac畅玩鸿蒙与硬件38」UI互动应用篇15 - 猜数字增强版

作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=326
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.lryc.cn/news/497739.html

相关文章:

  • MySql:理解数据库
  • 学习笔记051——SpringBoot学习2
  • crush rule 20 type does not match pool
  • BA是什么?
  • 通过docker 搭建jenkins环境;
  • 10-高级主题
  • harbor常见问题及解决方法分享
  • 行列式与线性方程组解的关系
  • 四、自然语言处理_02RNN基础知识笔记
  • Spring 容器管理 Bean
  • SpringBoot开发——Spring Boot3.4 强大的结构化日志记录
  • 信号和槽思维脑图+相关练习
  • Unity Feel插件快速入门
  • 数据链路层(四)---PPP协议的工作状态
  • 【C++】入门【六】
  • UE5 C++ 不规则按钮识别,复选框不规则识别 UPIrregularWidgets
  • Elasticsearch Serverless 现已正式发布
  • 如何使用apache部署若依前后端分离项目
  • openEuler安装UKUI桌面
  • 深入理解Oracle DB的锁和闩
  • jenkins+github+springboot自动部署
  • HTML5系列(10)-- 地理位置服务指南
  • 【MySQL 进阶之路】SQL 优化
  • Web3的技术栈详解:解读区块链、智能合约与分布式存储
  • [在线实验]-在docker中运行clickhouse
  • Rust常用命令总结
  • Ant-Design X,AI组件库
  • Matplotlib 内置的170种颜色映射(colormap)
  • 在linux虚拟机安装VMware tools
  • 初识EasyFramework