【HarmonyOS】HarmonyOS NEXT学习日记:三、初识ArkUI

【HarmonyOS】HarmonyOS NEXT学习日记:三、初识ArkUI

忘掉HTML和CSS,ArkUI里构建页面的最小单位就是 “组件”,所以今天的目标就是认识一些常用的基础组件,以及他们的用法,对ArkUI形成一个基本认识。

基本组成

了解UI之前我们先来重新认识一下ArkTS的基本组成,这里就要用到官网的经典图了,这里主要关注UI描述。
在这里插入图片描述
图中的Text(),Divider(),Button()就是三个组件,分别为文字、分割线、按钮。然后通过链式调用给每个组建设置属性和事件,即完成了组件的使用。

基本样式

以Button组件为例,如果我们想要修改他的样式,如果是写css,当然是调整他的width\height\background-color\font-size\color等,那么ArkUI怎么搞呢?
在这里插入图片描述

颜色

其中颜色使用了枚举值,当然颜色使用#开头的16进制也是可以的,如下

Button() {Text('Next').fontColor('#000000').fontSize(30).fontWeight(FontWeight.Bold)}

颜色值的两种设置方法在backgroundColor等设置颜色的方法中都通用。

尺寸

上图中,设置按钮尺寸和文字尺寸分别用了width、height和fontSize
其中weigth接收了一个百分比字符串,也可以接收带单位的字符串,当然他也是可以接收数字的:

.width(80)

如果这样设置不带单位的话,使用的单位就是vp,ArkUI推荐使用vp单位。
vp:屏幕密度相关像素,根据屏幕像素密度转换为屏幕物理像素,在实际宽度为1440物理像素的屏幕上,1vp约等于3px。

fontSize也一样可以接收带单位的字符或者一个不带单位的数字,如果不设置该项目的话,默认大小为16fp。
当接收到一个不带单位的数字,默认使用fp作为单位。
ArkUI推荐使用fp作为文字尺寸的单位。
fp: 字体像素,与vp类似适用屏幕密度变化,随系统字体大小设置变化。

文字溢出省略号、行高

  1. 文字溢出省略 (设置文本超长时的显示方式)
.textOverflow({overflow: TextOverflow.XXX//注意:需要配合 .maxLines(行数) 使用}) 
  1. 行高
.lineHeight(数字)

代码示例:

Text('测试文字测试文字测试文字测试文字测试文字测试文字')
.textOverflow({
overflow: TextOverflow.Ellipsis}).maxLines(1).fontSize(28).lineHeight(30)

在这里插入图片描述

Image

作用:界面中展示图片
语法:Image(图片数据源) 支持 网络图片资源 和 本地图片资源
下面演示怎么展示本地图片。

Image($r('app.media.background')).width(100).height(100)

在这里插入图片描述
代码中的$ r 用于从资源文件中获取指定的资源,通过 ‘ r 用于从资源文件中获取指定的资源,通过 ` r用于从资源文件中获取指定的资源,通过r(‘app.media.xxx’)`我们可以获取到src/main/resources/base/media中的资源
在这里插入图片描述

输入框

使用方法

TextInput(value?: TextInputOptions)

通过传参,我们可以设置placeholder和绑定值text
除此之外还有一些常用的属性设置,如下

TextInput({ text: this.text, placeholder: 'input your word...'}).placeholderColor(Color.Red)//placeholder的颜色.placeholderFont({ size: 14, weight: 400 })//placeholder文字样式.caretColor(Color.Blue)//光标颜色.width('95%').height(40).margin(20).fontSize(14).fontColor(Color.Black).inputFilter('[a-z]', (e) => {//输入限制,这里只能输入小写字母console.log(JSON.stringify(e))}).onChange((value: string) => {//change事件this.text = value})

在这里插入图片描述

此外,还有一个type参数也是常用的,可以来设置密码、数字、邮箱等常用输入框类型

TextInput().type(InputType.Password).margin({top: 20})
TextInput().type(InputType.Number).margin({top: 20})
TextInput().type(InputType.Email).margin({top: 20})
TextInput().type(InputType.PhoneNumber).margin({top: 20})

Button

用法:Button(‘按钮文本’)
常用参数:type,接收Capsule 胶囊型按钮、Circle 圆形按钮、 Normal 默认的普通按钮。

Button('普通按钮').margin({top: 20})
Button('胶囊按钮').type(ButtonType.Capsule).margin({top: 20})
Button('圆形按钮').type(ButtonType.Circle).margin({top: 20})

在这里插入图片描述

Checkbox

多选组件

Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })//name为多选框名称、group用来指定所属群组(没有使用CheckboxGroup时无效).select(true)//初始化是否选中.selectedColor(0xed6f21)//选中时的颜色.shape(CheckBoxShape.CIRCLE)//形状,有CIRCLE和ROUNDED_SQUARE两种.onChange((value: boolean) => {console.info('Checkbox1 change is' + value)})Checkbox({ name: 'checkbox2', group: 'checkboxGroup' }).select(false).selectedColor(0x39a2db).shape(CheckBoxShape.ROUNDED_SQUARE).onChange((value: boolean) => {console.info('Checkbox2 change is' + value)})

在这里插入图片描述
在这里插入图片描述

CheckboxGroup

刚刚我们设置多选的时候,设置的group属性似乎无效,是因为没有搭配CheckboxGroup使用。
使用这个组件可以设置同一个群组下的多选框全选或者全不选

CheckboxGroup({ group: 'checkboxGroup' }).checkboxShape(CheckBoxShape.ROUNDED_SQUARE).selectedColor('#007DFF').onChange((itemName: CheckboxGroupResult) => {console.info("checkbox group content" + JSON.stringify(itemName))})Checkbox({ name: 'checkbox1', group: 'checkboxGroup' }).select(true).selectedColor(0xed6f21).shape(CheckBoxShape.CIRCLE).onChange((value: boolean) => {console.info('Checkbox1 change is' + value)})Checkbox({ name: 'checkbox2', group: 'checkboxGroup' }).select(false).selectedColor(0x39a2db).shape(CheckBoxShape.ROUNDED_SQUARE).onChange((value: boolean) => {console.info('Checkbox2 change is' + value)})

在这里插入图片描述

Radio

单选,同一个组的选项只会有有个被选中。

Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {Column() {Text('Radio1')Radio({ value: 'Radio1', group: 'radioGroup' }).checked(true).radioStyle({checkedBackgroundColor: Color.Pink//颜色}).height(50).width(50).onChange((isChecked: boolean) => {console.log('Radio1 status is ' + isChecked)})}Column() {Text('Radio2')Radio({ value: 'Radio2', group: 'radioGroup' }).checked(false).radioStyle({checkedBackgroundColor: Color.Pink}).height(50).width(50).onChange((isChecked: boolean) => {console.log('Radio2 status is ' + isChecked)})}

在这里插入图片描述

总结

这里学习了一些常用的组件的用法、作为ArkUI的最小单位,熟悉了这些就能实现一些基本的页面。明天我打算再学习一些布局知识,这样就可以着手实现一个简单页面了。

arkUI提供的基础组件不止上面提到的这些,详情可以查看官方文档,提供了更多的诸如富文本渲染、日期选择、svg等多种组件,需要的时候在查看文档,边用边学即可,没必要一口气学完。

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

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

相关文章

重塑七星拼团模式:共创互赢新生态

在当今商业模式的洪流中,七星拼团模式凭借其创新的激励机制与深植的互助文化,独树一帜,成为了推动市场活跃与消费者参与的新引擎。本文将重新构思并阐述该模式的三大支柱——直推奖赏、滑落回馈与循环成就奖,同时深入探讨其互助逻…

(error) MOVED 12706 192.168.187.139:6379

Redis操作set、get等操作出现如下错误 (error) MOVED 12706 192.168.187.139:6379 这种情况一般是因为启动 redis-cli 时没有设置集群模式所导致; 在开启集群后,redis-cli用普通用户登录无法操作集群中的数据,需要加上-c 用集群模式登录才可…

网络故障处理及分析工具:Wireshark和Tcpdump集成

Wireshark 是一款免费的开源数据包嗅探器和网络协议分析器,已成为网络故障排除、分析和安全(双向)中不可或缺的工具。 本文深入探讨了充分利用 Wireshark 的功能、用途和实用技巧。 无论您是开发人员、安全专家,还是只是对网络操…

k8s集群 安装配置 Prometheus+grafana

k8s集群 安装配置 Prometheusgrafana k8s环境如下:机器规划: node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号&…

飞凌全志T527开发板modbus移植使用教程

交叉编译 进入到源码目录,执行 ./configure ac_cv_func_malloc_0_nonnullyes --hostaarch64-none-linux-gnu --enable-static --prefix/home/feng/文档/development/Linux/application/OK527N/libmodbus-3.1.10/install/其中–host为交叉编译器的前缀;…

巧用通义灵码助力护网面试

前言 前几年护网还算是一个比较敏感的话题,但是随着近段时间的常态化开始,护网行动也是逐渐走进了大众的视野,成为了社会各界共同关注的安全盛事。本篇也是受通义灵码备战求职季活动的启发,结合近期要开始的护网行动&#xff0c…

前端面试题(JS篇五)

一、同步与异步的区别 同步指的是当一个进程在执行某一个请求的时候,如果这个请求需要等待一段时间才能返回,那么这个进程会一直等待下去,直到这个消息返回之后才会继续执行。 指的是当一个进程在执行某一个请求的时候,如果这个请…

SSCOM串口调试工具安装和使用方法--V5.13.1版本

安装 链接:下载 解压后直接双击打开使用 使用 1、选择端口 2、点击【打开串口】 3、输入内容点击发送 4、上方就会展示发送或接收数据

Chapter12 屏幕后处理效果——Shader入门精要学习笔记

Chapter12 屏幕后处理效果 一、屏幕后处理概述以及基本脚本系统1.OnRenderImage 函数 —— 获取屏幕图像2.Graphics.Blit 函数 —— 使用特定的Shader处理3.在Unity中实现屏幕后处理的基本流程4.屏幕后处理基类 二、调整亮度、饱和度和对比度1.BrightnessSaturationAndContrast…

GESP CCF C++ 三级认证真题 2024年6月

第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有()种。 A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 &#x…

20240718 每日AI必读资讯

大模型集体失智!9.11和9.9哪个大,几乎全翻车了 - AI处理常识性问题能力受限,9.11>9.8数学难题暴露了AI短板。 - 训练数据偏差、浮点精度问题和上下文理解不足是AI在数值比较任务上可能遇到的困难。 - 改进AI需优化训练数据、Pr…

阿里云国际站:海外视频安全的DRM加密

随着科技的进步,视频以直播或录播的形式陆续开展海外市场,从而也衍生出内容安全的问题,阿里云在这方面提供了完善的内容安全保护机制,适用于不同的场景,如在视频安全提供DRM加密。 由图可以了解到阿里云保护直播安全的…

【ROS】的软件包应用商店使用-以小乌龟为例

文章目录 环境效果图介绍安装使用总结 环境 在Ubuntu20.04系统下运行 效果图 介绍 ros应用商店,里面有大量ros可使用的软件。 下面以ros经典的控制小乌龟为例。 安装 安装控制器 sudo apt install ros-noetic-rqt-robot-steering安装小乌龟 sudo apt insta…

微软GraphRAG +本地模型+Gradio 简单测试笔记

安装 pip install graphragmkdir -p ./ragtest/input#将文档拷贝至 ./ragtest/input/ 下python -m graphrag.index --init --root ./ragtest修改settings.yaml encoding_model: cl100k_base skip_workflows: [] llm:api_key: ${GRAPHRAG_API_KEY}type: openai_chat # or azu…

uniapp踩坑之项目:uni-table垂直居中和水平居中

uni-table 中的水平居中uni-td align"center"&#xff0c;css里的属性vertical-align: middle //html 水平居中<uni-table ref"table" :loading"loading" border stripe emptyText"暂无更多数据"><uni-tr><uni-th :wid…

[HDCTF2019]MFC

[HDCTF2019]MFC-CSDN博客 不会写 完全画瓢 我还以为win32什么系统逆向 原来是小瘪三! VM保护 下载xspy(看雪上有) 打开32位的 再打开 这个窗口 把这个放大镜托到这个大窗口(里面有个小窗口,不要托错了) 下面这个 onmeg 就她不正常,是什么0464 #include <stdio.h&g…

mac环境下安装python3的图文教程

Python 是一种功能多样且强大的编程语言&#xff0c;在各个领域得到广泛应用。许多 Mac 用户都在其设备上安装和运行 Python&#xff0c;以运行特定的应用程序或创建、运行自己的 Python 脚本。 文章源自设计学徒自学网-http://www.sx1c.com/49441.html 虽然某些版本的 macOS…

git镜像链接

镜像链接https://registry.npmmirror.com/binary.html?pathgit-for-windows/ CNPM Binaries Mirror 1.git init 2.克隆 IDEA集成git git分支

RDD算子---->coalesce和repartition的区别

1.coalesce() 作用&#xff1a;缩减分区数&#xff0c;用于大数据集过滤后&#xff0c;提高小数据集的执行效率。 需求&#xff1a;创建一个4个分区的RDD&#xff0c;对其缩减分区 #1.创建一个RDD rdd1 sc.parallelize(range(1,11),4) #2.对RDD重新分区 rdd2 rdd1.coalesc…

【CICID】GitHub-Actions-SpringBoot项目部署

[TOC] 【CICID】GitHub-Actions-SpringBoot项目部署 0 流程图 1 创建SprinBoot项目 ​ IDEA创建本地项目&#xff0c;然后推送到 Github 1.1 项目结构 1.2 Dockerfile文件 根据自身项目&#xff0c;修改 CMD ["java","-jar","/app/target/Spri…