三分钟了解鸿蒙ArkUI布局的基本组件和ArkTs基础语法

665 阅读3分钟

一. ArkUI:

声明式 UI 开发方式

容器组件:

  1. Column组件(){} 主要运用于垂直布局,纵向排列元素,没有滚动条

  2. Row(){} 主要运用于水平布局,横向排列元素,没有滚动条

  3. Stack(){} 层叠布局,层叠排列元素,没有滚动条

  4. Flex(){} 弹性布局通常用来做不规则元素的自动换行,有一些性能问题 没有滚动条

  5. List(){} 列表 + 元素外观拥有相同的结构 -> 有滚动条 -> new ListScroller()

  6. Scroll(){} 内容超出本身 有滚动条,一个更加轻量级的组件 -> new Scroller()

  7. Tabs (){} 底部导航栏和顶部导航栏 -> 有滚动

  8. Grid (){} 网格布局,用来做很规则的宫格效果 -> 有滚动

  9. Swiper(){} 轮播效果 -> 有滚动 -> new SwiperController()

  10. SideBarContainer(){} 侧边栏 -> 没有滚动。

  11. WaterFlow(){} 瀑布流,垂直方向如果高度不一致可以用它 -> 有滚动 -> new Scroller()

基础组件:

  1. Text() 用字符串形式来存放文字内容。

  2. Image() 存放图片,两个存放方法($r('app.maide.图片名称')),('复制图片的网络地址的链接')。

  3. Button() 按钮组件,会直接显示出一个胶囊型的按钮组件,里面可写字符串文字。

功能性组件:

  1. AlphabetIndexer -> 配合List组件可以做双向滚动联动效果。

  2. ImageAnimator -> 帧动画。

根据要布局的页面样式选择合适的组件来进行布局

ArkUI基本语法:

容器组件(参数){
  //内容
 }
	.属性1()
	.属性2()
        ...
	.属性N()

普通组件(参数)
	.属性1()
	.属性2()
        ...
	.属性N()

二. ArkTs:

演变过程:javascript(弱类型) -> 微软TypeScript(多了一个类型管理系统)-> 鸿蒙ArkTS(类型检查更加严格 Math.random()) -> MDN上查询相关api的用法(js的api)。

传送门

  1. ArkTS和 TS 以及 JS 的关系:
    1. JS:JavaScript,常用于网页开发,页面的效果
    2. TS:TypeScript,微软开发的,比 JS 多了类型系统
    3. ArkTS:JS、TS能用的,他 基本 都能用,写 UI
    4. 注意:看文档的时候,可能需要去 JS 的文档,TS 的文档找一部分的内容

1.数据类型 
(字符串,数字,布尔,联合类型,枚举类型,interface(对象),数组,function(箭头函数))
string,number,boolean, 类型1 | 类型 |...., enum 枚举的名字 { 名称 = 值.... }
interface 类型 { 属性名称:属性类型 },数组:类型[],function(()=>{})

// 变量,常量 ,状态变量
let 变量:类型 = 初始值
const 常量:类型 = 初始值
@State 变量:类型 = 初始值

2. 函数(方法)
// 2.1 普通函数写法: 
function 函数名(形参:形参类型,....) {
  // 方法体
  // return 0  // 返回number类型的数据
  // return '0'  // 返回字符串类型的数据
  // 如果一个函数没有显示调用return 默认返回的是undefined
}

2.2 箭头函数
let 函数名 = (形参:形参类型,....) => {
  // 方法体
  // return 0  // 返回number类型的数据
  // return '0'  // 返回字符串类型的数据
  // 如果一个函数没有显示调用return 默认返回的是undefined
}
  // 给事件传入函数的时候,通常我们使用的是一个不带有名字的箭头函数(匿名函数)
  // 给事件传入的函数我们也称之为回调函数
.onClick(()=>{})

//调用:函数名(实参,...)

3. 数组
// 语法: let 数组变量: number[] = [1,2]
// let 数组变量: number[][] = [[1,2],[3,4]]

 4. 对象
interface iDog{
  dogName:string,
  age:number  
}
interface iPerson {
   name:string,
   dog:iDog
}

let obj:iPerson = { name:'小小怪',dog:{dogName:'中华田园犬',age:1} }

// 表达式 : 可以通过计算获得一个结果的小段代码  1+1
// 语句:console.log('hello') if,for,while

5. 分支结构 - if,三元表达式(三元运算符)
// if()   // if(){} else{}   // if(){} else if(){} else{}
// 三元表达式   条件?true的取值:false的取值

 6. 循环结构 - for  while , for of
// 在ArkUI的Build()函数中要做循环我们基本用的是 ForEach()
// 其他的js函数逻辑中,我们可以使用for,while,for of

Math对象的详细说明:developer.mozilla.org/zh-CN/docs/…