【时间盒子】-【9.任务设置项】自定义任务名称、任务时长等设置项组件

Tips:

@Stage、@Link装饰器的使用;

参考我的帖子:https://developer.huawei.com/consumer/cn/forum/topic/0208152234389094513?fid=0101587866109860105

一、预览

  1. 红色框:任务设置项列表,把它定义为一个组件对象SettingList。
  2. 绿色框:任务设置项,这里有两个设置项,分别是任务名称和任务时长,后续可能有更多的设置项。所以把这些设置项抽象为一个类对象TaskSettingItem,这个对象类有名称(任务名称)、内容(早起跑步)和类型。
  3. 设置项类型:定义一个枚举类型对象TaskSettingType,代表不同的设置项;通过这个类型判断,当点击不同类型的设置项,弹出不同的对话框(见下一篇)。

二、枚举类型TaskSettingType.ets

右击目录constants >> 新建 >> ArkTS File,文件命名为TaskSettingType。

定义两个枚举常量,分别是0表示任务名称TASK_NAME;1表示任务时长TASK_DURATION。代码如下:

/*** 任务设置类型*/
export enum TaskSettingType {/*** 任务名称*/TASK_NAME = 0,/*** 任务时长*/TASK_DURATION = 1}

三、任务设置项TaskSettingItem.ets

右击目录viewmodel >> 新建 >> ArkTS File,文件命名为TaskSettingItem。

给设置项定义三个属性,分别是项的名称、内容和类型。代码如下:

import { TaskSettingType } from '../constants/TaskSettingType';
/*** 任务设置项实体对象*/
export default class TaskSettingItem {/*** 设置项的标题*/public title: string;/*** 设置项的值内容*/public content: string;/*** 设置项的类型*/public sType: TaskSettingType;/*** 构造函数* @param title 设置项的标题* @param content 设置项的值内容* @param type 设置项的类型*/constructor(title: string, content: string, type: TaskSettingType) {this.title = title;this.content = content;this.sType = type;}
}

四、任务设置项列表组件SettingList.ets

右击目录component >> 新建 >> ArkTS File,文件命名为SettingList。

 

  1. 设置项列表使用Column列上下布局,包含多个设置项,设置项与设置项之间有分割线隔开。
  2. 每个设置项使用Row行左右布局,包含设置项的名称、内容和右箭头图片。

给该组件定义一个任务设置项数组对象settingItems: Array<TaskSettingItem>,通过遍历数组对象的元素,动态生成任务设置项。代码如下:

import SizeUtil from '../utils/SizeUtil'
import TaskSettingItem from '../viewmodel/TaskSettingItem'@Component
export default struct SettingList {@Link settingItems: Array<TaskSettingItem>;build() {Column() {ForEach(this.settingItems, (item: TaskSettingItem, index: number | undefined) => {// 分割线,第一个不显示Divider().visibility(index === 0 ? Visibility.Hidden : Visibility.Visible).opacity($r('app.float.divider_opacity')).color($r('app.color.grey_divider')).lineCap(LineCapStyle.Round).margin({left: SizeUtil.getVp($r('app.float.setting_item_divider_margin_horizon')),right: SizeUtil.getVp($r('app.float.setting_item_divider_margin_horizon'))})Row() {Text(item.title).fontSize(SizeUtil.getVp($r('app.float.setting_item_name_font_size'))).fontWeight(FontWeight.Regular).fontColor($r('app.color.grey_divider')).layoutWeight(1)Text(item.content == '' ? '请输入' : item.content).fontSize(SizeUtil.getVp($r('app.float.setting_item_content_font_size'))).fontWeight(FontWeight.Normal).fontColor($r('app.color.grey_divider')).opacity($r('app.float.setting_item_content_font_opacity'))Image($r('app.media.icon_right')).width(SizeUtil.getVp($r('app.float.setting_item_image_width'))).height(SizeUtil.getVp($r('app.float.setting_item_image_height'))).objectFit(ImageFit.Fill).margin({left: SizeUtil.getVp($r('app.float.setting_item_image_margin_horizon'))})}.height(SizeUtil.getVp($r('app.float.setting_item_height'))).alignItems(VerticalAlign.Center).padding({left: SizeUtil.getVp($r('app.float.setting_item_interval')),right: SizeUtil.getVp($r('app.float.setting_item_interval'))}).onClick(() => {// 弹窗设置// TODO:})}, (item: TaskSettingItem, index: number | undefined) => JSON.stringify(item) + index)}.margin({bottom: SizeUtil.getVp($r('app.float.setting_item_interval')),left: SizeUtil.getVp($r('app.float.setting_item_interval')),right: SizeUtil.getVp($r('app.float.setting_item_interval'))}).borderRadius(SizeUtil.getVp($r('app.float.setting_item_border_radius'))).backgroundColor(Color.White)}}

五、float.json

在资源文件float中新定义的数值,代码如下:

{"name": "divider_opacity","value": "0.05"
},
{"name": "setting_item_divider_margin_horizon","value": "12"
},
{"name": "setting_item_name_font_size","value": "16"
},
{"name": "setting_item_content_font_size","value": "14"
},
{"name": "setting_item_content_font_opacity","value": "0.6"
},
{"name": "setting_item_image_width","value": "6.7"
},
{"name": "setting_item_image_height","value": "12.8"
},
{"name": "setting_item_image_margin_horizon","value": "7"
},
{"name": "setting_item_height","value": "56"
},
{"name": "setting_item_interval","value": "12"
},
{"name": "setting_item_border_radius","value": "24"
}

六、资源文件

在资源文件media目录下添加设置项右侧的箭头图片文件(见附件)

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux基础 超级笔记

1.Linux系统的组成 Linux系统内核&#xff1a;提供系统最核心的功能&#xff0c;如软硬件和资源调度。 系统及应用程序&#xff1a;文件、任务管理器。 2.Linux发行版 通过修改内核代码自行集成系统程序&#xff0c;即封装。比如Ubuntu和centos这种。不过基础命令是完全相…

【C++ Primer Plus】4

2 字符串 字符串是存储在内存的连续字节中的一系列字符&#xff1b;C处理字符串的方式有两种&#xff0c; c-风格字符串&#xff08;C-Style string&#xff09;string 类 2.1 c-风格字符串&#xff08;C-Style string&#xff09; 2.1.1 char数组存储字符串&#xff08;c-…

『网络游戏』自适应制作登录UI【01】

首先创建项目 修改场景名字为SceneLogin 创建一个Plane面板 - 将摄像机照射Plane 新建游戏启动场景GameRoot 新建空节点重命名为GameRoot 在子级下创建Canvas 拖拽EventSystem至子级 在Canvas子级下创建空节点重命名为LoginWnd - 即登录窗口 创建公告按钮 创建字体文本 创建输入…

Java:数据结构-初始结合框架 时间复杂度和空间复杂度 初识泛型

一 初始结合框架 1.什么是Java的集合框架 Java 的集合框架&#xff08;Java Collection Framework&#xff0c;JCF&#xff09;是 Java 标准库中的一部分&#xff0c;用于存储和操作一组数据。它提供了一些常用的数据结构和接口&#xff0c;用来高效管理和操作数据。Java 的…

TOP-K问题

目录 TOP-K问题 1.对TOP-K问题的理解 1.1.TOP-K问题定义 1.2.TOP-K问题的解决思路 1.3.以求N个数据中的前K个最大元素为例&#xff0c;阐述建堆来解决TOP-K的原理 1.4.TOP-K问题的类型 2.类型1&#xff1a;数据量N较小&#xff0c;可以全部加载到内存中。求数据量N的前K…

2024 ciscn WP

一、MISC 1.火锅链观光打卡 打开后连接自己的钱包&#xff0c;然后点击开始游戏&#xff0c;答题八次后点击获取NFT&#xff0c;得到有flag的图片 没什么多说的&#xff0c;知识问答题 兑换 NFT Flag{y0u_ar3_hotpot_K1ng} 2.Power Trajectory Diagram 方法1&#xff1a; 使用p…

集合论基础 - 离散数学系列(一)

目录 1. 集合的基本概念 什么是集合&#xff1f; 集合的表示方法 常见的特殊集合 2. 子集与幂集 子集 幂集 3. 集合的运算 交集、并集与补集 集合运算规则 4. 笛卡尔积 5. 实际应用 6. 例题与练习 例题1 练习题 总结 引言 集合论是离散数学的基础之一&#xff…

Linux 外设驱动 应用 1 IO口输出

从这里开始外设驱动介绍&#xff0c;这里使用的IMX8的芯片作为驱动介绍 开发流程&#xff1a; 修改设备树&#xff0c;配置 GPIO1_IO07 为 GPIO 输出。使用 sysfs 接口或编写驱动程序控制 GPIO 引脚。编译并测试。 这里假设设备树&#xff0c;已经配置好了。不在论述这个问题…

金融教育宣传月 | 平安养老险百色中心支公司开展金融知识“消保县域行”宣传活动

9月22日&#xff0c;平安养老险百色中心支公司积极落实国家金融监督管理总局关于开展金融教育宣传月活动的相关要求&#xff0c;联合平安人寿百色中心支公司共同组成了平安志愿者小队&#xff0c;走进百色市四塘镇百兰村开展了一场别开生面的金融消费者权益保护宣传活动。此次活…

通用mybatis-plus查询封装(QueryGenerator)

结果如下图所示 java类代码分别如下 1 package com.hdx.contractor.util.mybatis;import com.hdx.contractor.common.user.SecurityUser; import com.hdx.contractor.common.user.UserDetail; import com.hdx.contractor.util.query.oConvertUtils; import lombok.extern.slf…

YOLO11改进|卷积篇|引入线性可变形卷积LDConv

目录 一、【LDConv】卷积1.1【LDConv】卷积介绍1.2【LDConv】核心代码 二、添加【LDConv】卷积2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【LDConv】卷积 1.1【LDConv】卷积介绍 下图是【LDCNV】的结构图&#xff0c;让我们简单分析…

Ajax面试题:(第一天)

目录 1.说一下网络模型 2.在浏览器地址栏键入URL&#xff0c;按下回车之后会经历以下流程&#xff1a; 3.什么是三次握手和四次挥手&#xff1f; 4.http协议和https协议的区别 1.说一下网络模型 注&#xff1a;各层含义按自己理解即可 2.在浏览器地址栏键入URL&#xff0c;…

盲拍合约:让竞拍更公平与神秘的创新解决方案

目录 前言 一、盲拍合约是什么&#xff1f; 二、盲拍合约工作原理 1、合约创建与初始化 2、用户出价&#xff08;Bid&#xff09; 3、出价结束 4、披露出价&#xff08;Reveal&#xff09; 5、处理最高出价 6、结束拍卖 7、退款与提款 三、解析盲拍合约代码…

阿里云域名解析和备案

文章目录 1、域名解析2、新手引导3、ICP备案 1、域名解析 2、新手引导 3、ICP备案

类的特殊成员函数——三之法则、五之法则、零之法则

系统中的动态资源、文件句柄&#xff08;socket描述符、文件描述符&#xff09;是有限的&#xff0c;在类中若涉及对此类资源的操作&#xff0c;但是未做到妥善的管理&#xff0c;常会造成资源泄露问题&#xff0c;严重的可能造成资源不可用&#xff0c;如申请内存失败、文件句…

【redis-05】redis保证和mysql数据一致性

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…

57.对称二叉树

迭代 class Solution {public boolean isSymmetric(TreeNode root) {if(rootnull){return true;}Deque<TreeNode> denew LinkedList<>();TreeNode l,r;int le;de.offer(root.left);de.offer(root.right);while(!de.isEmpty()){lde.pollFirst();rde.pollLast();if(…

BMC pam认证的使用

1.说明 1.1 文档参考资料 https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_ADG.htmlhttp://www.fifi.org/doc/libpam-doc/html/pam_appl-3.htmlpdf文档: https://fossies.org/linux/Linux-PAM-docs/doc/adg/Linux-PAM_ADG.pdflinux-pam 中文文档pam 旧文p…

<数据集>工程机械识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2644张 标注数量(xml文件个数)&#xff1a;2644 标注数量(txt文件个数)&#xff1a;2644 标注类别数&#xff1a;3 标注类别名称&#xff1a;[dump truck, wheel loader, excavators] 序号类别名称图片数框数1dum…

SpringBootWeb快速入门!详解如何创建一个简单的SpringBoot项目?

在现代Web开发中&#xff0c;SpringBoot以其简化的配置和快速的开发效率而受到广大开发者的青睐。本篇文章将带领你从零开始&#xff0c;搭建一个基于SpringBoot的简单Web应用~ 一、前提准备 想要创建一个SpringBoot项目&#xff0c;需要做如下准备&#xff1a; idea集成开发…