HarmonyOS 界面开发基础篇

一、布局思路

ArkUI(方舟开发框架)是一套 构建 鸿蒙应用 界面 的框架。

构建页面的最小单位就是“组件”。

组件分类

  1. 基础组件:界面呈现的基础元素。
    如:文字、图片、按钮等。
  2. 容器组件:控制布局排布。
    如:Row行、Column列等。

布局思路

  1. 先排版、再放内容。
  2. build有且只能有一个根元素,且是容器组件

组件语法

  1. 容器组件:行Row、列Column
容器组件() {// 内容
}

  1. 基础组件:文字Text、图片
基础组件(参数)

案例

// 构建 → 界面build() {// 布局思路:先排版、再放内容Column() {// 内容Text('小说简介')Row(){Text('都市')Text('生活')Text('情感')Text('男频')}}}

二、组件的属性方法

需求:美化组件外观效果

组件() {.属性方法1(参数).属性方法2(参数).属性方法3(参数)……
}

 // 构建 → 界面build() {// 布局思路:先排版、再放内容Column() {// 内容Text('小说简介').width('100%').fontSize(28).fontWeight(FontWeight.Bold).height(50)Row(){Text('都市').width(50).height(30).backgroundColor(Color.Orange)Text('生活').width(50).height(30).backgroundColor(Color.Pink)}.width('100%')}.width('100%').height('100%')}

三、字体颜色

.fontColor(颜色值)

Text('小说简介').fontColor(Color.Red).fontColor('#df3c50')
build() {//   今日头条置顶新闻Column(){Text('学鸿蒙,就来汇潮学院~').fontSize(28).fontWeight(FontWeight.Bold).width('100%').height(50)Row(){Text('置顶').fontColor('#c79286').width(50)Text('新华社').width(60).fontColor(Color.Gray)Text('4680评论').fontColor(Color.Gray)}.width('100%')}.width('100%')}

四、文字溢出省略号、行高

1.文字溢出省略号 (设置文本超长时的显示方式)

.textOverflow({overflow:TextOverflow.xxx
})

注意:需要配合 .maxLines(行数) 使用

Text('方舟...').textOverflow({overflow({overflow:TextOverflow.Ellipsis}).maxLines(2)

2.行高

.lineHeight(数字)

3.案例

build() {Column(){Text('HarmonyOS 开发初体验').fontSize(28).fontWeight(FontWeight.Bold).width('100%').lineHeight(50)Text('ArkUI开发框架是方舟开发框架的简称,它是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架,它使用极简的UI信息语法、丰富的UI组件以及实时界面语言工具,帮助开发者提升应用界面开发效率 30%,开发者只需要使用一套 TS / JS API,就能在多个 HarmonyOS / OpenHarmony 设备上提供既丰富又流畅的用户界面体验。').width('100%').lineHeight(24).textOverflow({overflow:TextOverflow.Ellipsis})// 必须配合maxLines才有效果.maxLines(2)}.width('100%')}

五、Image 图片组件

作用:界面中展示图片

语法:Image(图片数据源) 支持 网络图片 和 本地图片资源

Column(){Image($r('app.media.图片))
}

  1. 网络图片的加载
Column(){Image('https://img-home.csdnimg.cn/images/20240711093848.png')
}

  1. 本地图片的加载
Column(){Image($r('app.media.product'))
}

六、输入框和按钮

1.输入框

TextInput(参数对象).属方方法()

1.参数对象:placeholder 提示文本

2.属性方法:.type(inputType.xxx) 设置输入框type类型

type值

解释说明

Normal

基本输入模式,无特殊限制

Password

密码输入模式

TextInput({placeholder:'占位字符文本'
)}.type(InputType.Password)

2.按钮

Button('按钮文本')

3.案例

build() {// 控制组件间的距离,可以给Column 设置 {space : 值}Column({space : 20}){TextInput({placeholder:'输入账号'}).type(InputType.Normal)TextInput({placeholder:'输入密码'}).type(InputType.Password)Button('登录').width(200).fontSize(24)}}

七、布局元素的组成

1.内边距 padding

作用:在组件内 添加 间距,拉开内容与组件边缘之间的距离

Text('内边距padding').padding(20) //四个方向内距均为20
Text('内边距padding').padding({top:10,right:20,bottom:30,left:80})

2.外边距 margin

作用:在 组件外 添加 间距,拉开两个组件之间的距离

Text('外边距 margin').margin(20) //四个方向内距均为20
Text('外边距 margin').margin({top:10,right:20,bottom:30,left:80})//四个方向外边分别设置

3.综合案例

Column(){Image($r('app.media.cat')).width(80).height(80).border({radius:50}).margin({top:50})Text('大三炒股').margin({top:10,bottom:40})Button('QQ 登录').width('90%').margin({bottom:10})Button('微信登录').width('90%').backgroundColor('#dedede').fontColor(Color.Black)}.width('100%').height('100%')

4.边框 border

作用:给组件添加边界,进行装饰美化。

Text('边框 border'){.border({width:1,//宽度(必须设置)color:'#3274f6',//颜色style:BorderStyle.solid //样式)} //四个方向相同
Text('边框 border'){.border({width:{left:	1,right:2},color:{left:Color.Red,right:Color.Blue},style:{left:BorderStyle.Dashed,right:BorderStyle.Dotted})} 

5.设置组件圆角

属性:.borderRadius(参数)

参数:数值 或 对象

  • topLeft:左上角
  • topRight:右上角
  • bottomLeft:左下角
  • bottomRight:右下角
Text('圆角语法').borderRadius(5) //四个圆角相同.borderRadius({topLeft:5,topRight:10,bottomLeft:15,bottomRight:20)} //四个方向圆角,单独设置

八、背景属性

1.背景图-backgroundImage

属性:.backgroundImage(背景图地址)

.backgroundImage($r('app.media.flower'))

2.背景图片的平铺方式

背景图片的平铺方式 ImageRepeat:(可省略)

  • NoRepeat:不平铺,默认值
  • X:水平平铺
  • Y:垂直平铺
  • XY:水平垂直均平铺
.backgroundImage($r('app.media.flower'),ImageRepeat.XY)

3.背景图片位置 - backgroundImagePostion

作用:调整背景图在组件内的显示位置,默认显示位置为组件左上角

属性:.backgroundImagePostion(坐标对象 或 枚举)

参数:

  • 位置坐标:{x:位置坐标,y:位置坐标}
  • 枚举Alignment
// 位置坐标
.backgroundImagePostion({x:100,y:100})// 枚举
.backgroundImagePostion(Alignment.Center)

4.背景图尺寸-backgroundImageSize

作用:背景图缩放

属性:.backgroundImageSize(宽高对象 或 枚举)

参数:

  • 背景图宽高:{width:尺寸,height:尺寸}
  • 枚举 ImageSize:
    Contain:等比例缩放背景图,当宽或高与组件尺寸相同停止缩放
    Cover:等比缩放背景图至图片完全覆盖组件范围
    Auto:默认,原图尺寸
// 位置坐标
.backgroundImageSize({width:100,height:100})// 枚举
.backgroundImagePostion(ImageSize.Cover)

九、线性布局

线性布局通过线性容器 Column 和 Row 创建。

  • Column 容器:子元素 垂直方向 排列
  • Row 容器:子元素 水平方向 排列

1.排列主方向的对齐方式(主轴)

属性:.justifyContent(枚举FlexAlign)

2.交叉轴对齐方式

属性:alignItems()

参数:枚举类型

  • 交叉轴在水平方向:HorizontalAlign
  • 交叉轴在垂直方向:VerticalAlign

3.自适应伸缩

设置layoutWeight属性的 子元素 与 兄弟元素,会 按照权重 进行分配 主轴 的空间。

语法:.layoutWeight(数字)

Text('右侧').layoutWeight(1).height(50).backgroundColor(Color.Orange)
Text('左侧').width('20%').height(50).backgroundColor(Color.Pink)

十、弹性布局

  1. 主轴方向:direction
  2. 主轴对齐方式:justifyContent
  3. 交叉轴对齐方式:alignItems
  4. 布局换行:wrap
Flex(参数对象){子组件1子组件2子组件3子组件N
}Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceAround,alignItems:ItemAlign.Start
})

Flex默认主轴水平往右,交叉轴垂直往下

1.Flex换行 - wrap

wrap属性:Flex 是单行布局还是多行布局

  1. FlexWrap.NoWrap 单行布局
  2. FlexWrap.Wrap 多行布局
Flex({wrap:FLexWrap.Wrap
)}

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

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

相关文章

Window10下安装WSL-Ubuntu20.04

1.开启并更新WSL 1.1开启WSL 首先先来看一下电脑是否能够开启WSL:待补充... 然后再来看一下如何开启WSL:win->设置->应用->应用和功能->程序和功能,如下所示: 最后选择启用或关闭Windows功能,开启两个选项:1.Hyper-V…

C++中链表的底层迭代器实现

大家都知道在C的学习中迭代器是必不可少的,今天我们学习的是C中的链表的底层迭代器的实现,首先我们应该先知道链表的底层迭代器和顺序表的底层迭代器在实现上有什么区别,为什么顺序表的底层迭代器更加容易实现,而链表的底层迭代器…

Golang | Leetcode Golang题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; func lowestCommonAncestor(root, p, q *TreeNode) (ancestor *TreeNode) {ancestor rootfor {if p.Val < ancestor.Val && q.Val < ancestor.Val {ancestor ancestor.Left} else if p.Val > ancestor.Val && q…

Dify中的工具

Dify中的工具分为内置工具&#xff08;硬编码&#xff09;和第三方工具&#xff08;OpenAPI Swagger/ChatGPT Plugin&#xff09;。工具可被Workflow&#xff08;工作流&#xff09;和Agent使用&#xff0c;当然Workflow也可被发布为工具&#xff0c;这样Workflow&#xff08;工…

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构&#xff1a; 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…

芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

STM32MP135裸机编程:定时器内核时钟频率计算方法

0 工具准备 STM32MP13xx参考手册 1 定时器内核时钟频率计算方法 1.1 定时器分组 STM32MP135的定时器按照时钟源不同分成了三组&#xff0c;如下&#xff1a; APB1: APB2: APB6&#xff1a; 1.2 定时器内核时钟频率计算方法 APB1DIV是APB1的分频系数&#xff0c;APB2DIV、…

51单片机9(使用左移实现流水灯编程)

一、序言&#xff1a;下面我们来给大家介绍一下这个流水灯&#xff0c;流水灯如何来实现&#xff1f;我们依然使用这个工程来完成它。 1、那要使用实现这个流水灯&#xff0c;那我们只需要让D1到D8逐个的点亮&#xff0c;那同样要实现它足够的点亮&#xff0c;也会涉及到延时&…

html设计(两种常见的充电效果)

第一种 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

tomcat和nginx实现动静分离

访问nginx就是静态页面&#xff0c;nginx代理index.jsp可以访问tomcat的动态页面。 实验 1、设备以及IP地址 nginx1 192.168.10.41 tomcat1 192.168.10.51 tomcat2 192.168.10.52 2、tomcat1 的配置 创建动态页面 cd /usr/local/tomcat/webapps 创建一个目录作为一个ser…

【LeetCode 链表合集】

文章目录 1. LeetCode 206 反转链表2. NC40 链表相加 1. LeetCode 206 反转链表 题目链接&#x1f517; 解题思路&#xff1a; &#x1f50d; &#x1f427;创建一个新的节点&#xff0c;使用链表头插的方法&#xff1b; 2. NC40 链表相加 题目链接&#x1f517; 解题思路…

C++入门基础(2)

C入门基础&#xff08;2&#xff09; 1.缺省函数2.函数重载3.引用3.1 引用的概念和定义3.2 引用的特性3.3 引用的使用3.3.1引用的特性 4 .const引用5. 指针和引用的关系6.inline 1.缺省函数 • 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&#xf…

【服务器】在Linux查看运行的Python程序,并找到特定的Python程序

在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置&#xff0c;并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…

使用 YUM 仓库和 NFS 共享存储的详细指南

使用 YUM 仓库和 NFS 共享存储的详细指南 文章目录 使用 YUM 仓库和 NFS 共享存储的详细指南一、YUM 仓库服务1.1 YUM 介绍1.2 YUM 源的提供方式1.2.1 配置本地源仓库1.2.2 配置 FTP 源1.2.3 配置 HTTP 源 1.3 网络源配置1.3.1 清华源1.3.2 163 源1.3.3 阿里云源 1.4 YUM 命令1…

IntelliJ IDEA自定义菜单(Menus)、任务栏(toolbars)详细教程

本示例是基于IDEA2024.1Ultimate版本的New UI模式下 一、自定义菜单 1、打开Settings&#xff0c;找到Menus and Toolbars 2、点击右边的Main Menu&#xff0c;点击号&#xff0c;选择Add Action 3、弹出Add Action弹窗&#xff0c;搜索或者选择你要添加的指令 二、自定义工具…

Linux命令更新-Vim 编辑器

简介 Vim 是 Linux 系统中常用的文本编辑器&#xff0c;功能强大、可扩展性强&#xff0c;支持多种编辑模式和操作命令&#xff0c;被广泛应用于程序开发、系统管理等领域。 1. Vim 命令模式 Vim 启动后默认进入命令模式&#xff0c;此时键盘输入的命令将用于控制编辑器本身&…

OpenCV 寻找棋盘格角点及绘制

目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点&#xff08;Checkerboard Corners&#xff09;是计算机视觉中相机标定&#xff08;Camera Calibration&#xff09;过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…

LeetCode 441, 57, 79

目录 441. 排列硬币题目链接标签思路代码 57. 插入区间题目链接标签思路两个区间的情况对每个区间的处理最终的处理 代码 79. 单词搜索题目链接标签原理思路代码 优化思路代码 441. 排列硬币 题目链接 441. 排列硬币 标签 数学 二分查找 思路 由于本题所返回的 答案在区间…

【C++】入门基础(引用、inline、nullptr)

目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量&#xff0c;而是给已经存在的变量取一个别名&#xff0c;编译器不会给引用变量开辟内存空间&#xff0c…