初识ArkUI

初识ArkUI

ArkUI为应用的UI开发提供了完整的基础设施,包括简洁的UI语法,丰富的UI功能,以及实时界面预览工具,可以支持开发者进行可视化界面开发

概念:

即用户界面,开发者可以将应用的用户界面设计多个功能页面,每个页面进行单独的文件管理,并通过页面路由API完成页面间的调度管理如跳转,回退等操作,以实现内的功能解耦。

组件:

UI构建与显示的最小单位,开发者通过多种组件的组合,构建出满足自身应用诉求的完整界面。

两种开发范式:

声明是开发范式:采用基于TypeScrip声明式UI语法扩展而来的ArkTS语言,从组件,动画和状态管理三个维度提供UI绘制能力。

类Web开发范式:采用经典的HTML,CSS,JavaScript三段式开发方式,即使用HML标签文件搭建布局,使用CSS文件描述样式,使用JavaScrip文件处理逻辑。该范式更符合于Web前端开发者的使用习惯,便于快速将已有的Web应用改造成方舟UI框架应用。

不同应用类型支持的开发范式

stage模型:应用或服务的页面支持声明式开发范式,卡片支持声明式开发范式和类Web开发范式

FA模型:应用或服务的页面支持声明式开发范式和类Web开发范式,卡片支持类Web开发范式

ArkUI特点:

开发效率高,开发体验好(界面也是代码,让开发者的编程体验得到提升。)

性能优越:声明式UI前端和UI后端分层,语言编译器和运行时的优化,生态容易快速推进,能够借主流语言生态快速推进,语言相对中立友好,有相应的标准组织可以逐步演进。

布局
线性布局
线性布局是开发中最常用的布局,通过线性容器row和column构建。线性布局是其他布局的基础,其子元素在线性方向上依次排列。
线性布局基本概念:

布局容器:具有布局能力的容器组件,可以承载其他元素作为其子元素,布局容器会对其子元素进行尺寸计算和布局排列。

布局子元素:布局容器内部的元素。

主轴:线性布局容器在布局方向上的轴线,子元素默认沿主轴排列。

间距:布局子元素的间距。

space属性设置排列方向上子元素的间距
Blank常用空白填充组件
Toggle()组件提供勾选框样式、状态按钮样式及开关样式。
ts 复制代码
Row(){
  Text('你好')
  //  Blank()空白填充组件
 Blank().color('red')
  // Toggle()组件提供勾选框样式、状态按钮样式及开关样式。
  Toggle({type:ToggleType.Switch,isOn:true})
}.width('90%')
.height(60)
.border({color:'red',width:1,style:BorderStyle.Solid})
 .layoutWeight(2)
justifyContent(FlexAlign.Start):主轴对齐方式

(End从后往前排,SpaceAround:左右间距 SpaceEvenly:水平对齐)

.alignItems(HorizontalAlign.Start):侧轴对齐

(Top:靠上Bottom:靠下)

ts 复制代码
Row(){
  Column().width(40).height(40).backgroundColor('gray')
  Column().width(40).height(40).backgroundColor('gray')
  Column().width(40).height(40).backgroundColor('gray')
  Column().width(40).height(40).backgroundColor('gray')
}.width('90%')
.height(60)
.border({color:'red',width:1,style:BorderStyle.Solid})
.justifyContent(FlexAlign.SpaceEvenly)
.alignItems(VerticalAlign.Bottom)
自适应缩放

自适应缩放是指子元素随容器尺寸的变化而按照预设的比例自动调整尺寸,适应各种不同大小的设备。

布局使用scroll组件

scrollable(ScrollDirection.Vertical)//滚动方向为垂直方向

scrollBar(BarState.Auto)//On:打开滚动条 Off:关闭滚动条 Auto:自动

scrollBarColor(Color.Yellow)//滚动条的颜色

scrollBarWidth(5)//滚动条的宽度

ts 复制代码
@State message: string = 'Hello World';
@State nums:number[]=[1,2,3,4,5,6,7,8,9,10]
build() {
 Scroll(){
    Column({space:10}){
      ForEach(this.nums,(n:number,i)=>{
        Row(){
          Text(n.toString())
        }.height(100)
        .backgroundColor('gray')
        .width('90%')
        .justifyContent(FlexAlign.Center)
        .borderRadius(10)

        Row(){
          Text(n.toString())
        }.height(100)
        .backgroundColor('gray')
        .width('90%')
        .justifyContent(FlexAlign.Center)
        .borderRadius(10)
      })
    }.width('100%')

  }
  .height('100%')
  .width('100%')
  .scrollable(ScrollDirection.Vertical)
  .scrollBar(BarState.Auto)
  .scrollBarColor(Color.Yellow)
  .scrollBarWidth(5)
}
相关推荐
Jerry说前后端3 小时前
Android 移动端 UI 设计:前端常用设计原则总结
android·前端·ui
传奇开心果编程13 小时前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
公众号【林东笔记】获取资料1 天前
Adobe Photoshop 2024:软件安装包分享和详细安装教程
ui·adobe·photoshop
全栈软件开发1 天前
PHP域名授权系统网站源码_授权管理工单系统_精美UI_附教程
开发语言·ui·php·php域名授权·授权系统网站源码
小小小小小星2 天前
鸿蒙开发之ArkUI框架进阶:从声明式范式到跨端实战
harmonyos·arkui
Quarkn2 天前
鸿蒙原生应用ArkUI之自定义List下拉刷新动效
list·harmonyos·arkts·鸿蒙·arkui
John_ToDebug3 天前
深入解析 Chrome UI 布局配置的设计思想与实现机制
chrome·ui
代码小念3 天前
Pytest+selenium UI自动化测试实战实例(超详细)
selenium·ui·pytest
Aczone284 天前
Linux Framebuffer(帧缓冲)与基本 UI 绘制技术
linux·运维·ui