当前位置: 首页 > news >正文

HarmonyOS NEXT星河版零基础入门(2)

1.Scroll滚动容器-核心用法

1(1).Scroll的核心用法

快速得到一个长度为5的数组

Array.from({length:5})

代码:

这种是默认是竖向的  要是想要实现横向的 就得把Scroll里边的Column改为Row组件  并且把scrolllable设置为Horizontal横向

1(2).Scroll的常见属性

代码部分

1(3).滚动容器Scroll-控制器

代码:

1(3).滚动容器Scroll-Scroll事件

2.容器组件Tabs

2.1Tabs的基本用法

代码

2.2Tabs的常用属性

代码

2.3滚动导航栏

代码:

2.4自定义TabBar

案例代码

 2.5自定义TabBar-高亮切换

代码:

高亮部分代码

逻辑:传参需要新增它本身的下标 和选中的图片  如果在切换时 那个选中的图标==我们现在这个本身的图标  那就相当于选中的就是这个状态 那么我们需要将高亮的字体设置为红色 图片我们就用传进来的选中的图片

3.class类

3.1class类的 实例属性方法(字段)

代码:

3.2class类的 构造函数

代码:

代码结构比较复杂时  我们就可以基于接口传一个对象

3.3class类-定义方法&静态方法&静态属性
      类定义的方法是实例可以访问的  

      类定义的 静态方法和属性是给本身这个类添加的不会去随便变得
3.4class类-继承extends和super关键字
类的继承

代码:

若是子类想要重写父类的方法  只需在子类中提供同名的方法即可

这样打印出来的就是子类中的sayHi()

若是还想要继承父类中的方法或属性或构造函数  就得用super

代码:

super获取父类方法

super获取父类的构造函数 

super获取父类属性

3.5class类-instanceof和typeof

typeof仅能用于简单类型的判断 ,复杂类型需要用instanceof判断

代码

3.6class类-类的修饰符
readonly修饰符

代码:

private修饰符

代码


protected修饰符

代码:

public修饰符

其实public是默认可不写的 

总结

4.剩余参数和展开运算符

剩余参数

代码

展开运算符

代码:

5 interface接口的继承和实现

5.1接口继承

代码:

5.2接口实现

代码:

6.泛型函数

6.1 泛型函数

类型可当参数传过去 看下图  左边那么多代码 右边几行就实现了

代码:

 练习

6.2 泛型约束

代码:

6.3多个泛型参数

代码:

6.4泛型接口

代码:

6.5泛型类

代码:

7、模块化语法

7.1模块化基本认知

7.2默认导出和导入

代码

7.3按需导出和导入

代码:

7.4全部导入

代码:

8.自定义组件基础

9.自定义组件-通用样式事件

10.自定义组件-成员函数变量

代码:

11.BuilderParam构建函数-传递UI(插槽)

代码:

11.1单个BuilderParam有两种传递方式

一种是按参数传递 参数的key要与子组件中定义的一致

一种是按照自定义组件外部传递 这种看起来更与插槽类似

@Entry
@Component
struct BuilderParamPage {@BuilderFirst(){Image('https://img1.baidu.com/it/u=3631027001,3666368042&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500').width(100).height(100)}@BuilderTwo(){Button('我是点击按钮')}build() {Column() {SonBuilderParam({getContent:this.First,})SonBuilderParam(){Button('代付款')}}.height('100%').width('100%').backgroundColor(Color.Gray).padding(20)}
}@Component
struct SonBuilderParam {@BuildergetDefault(){Text('我是默认内容')}@BuilderParamgetContent:()=>void=this.getDefaultbuild() {Column() {
this.getContent()}.height(200).width('100%').backgroundColor('#fff').borderRadius(10).padding(20).margin({bottom:20})}
}

11.1多个BuilderParam怎么传递

代码:

@Entry
@Component
struct ManyBuilderParamPage {@Builderheader() {Row() {Text('我是头部')}.width('100%').backgroundColor(Color.Pink).height(60)}@BuilderContent() {Column() {Text('我是内容')}.width('100%').backgroundColor(Color.Gray).height(100)}build() {Column() {// SonManyBuilderParam() {//   this.header()//   this.Content()//// }SonManyBuilderParam({header:()=>{this.header()},Con:()=>{this.Content()}})}.height('100%').width('100%').backgroundColor(Color.Gray).padding(20)}
}@Component
struct SonManyBuilderParam {@BuilderDefauteHeader() {Text('我是默認的')}@BuilderDefauteCon() {Text('我是默認的')}@BuilderParamheader: () => void = this.DefauteHeader@BuilderParamCon: () => void = this.DefauteConbuild() {Column() {this.header()this.Con()Row() {Button('取消').onClick(() => {})Button('确定').onClick(() => {})}}.width('100%').backgroundColor('#fff').borderRadius(10).padding(20).margin({bottom: 20})}
}

看下效果图

11.2尾随闭包

尾随闭包就是父组件在子组件(){}后边写内容结构传过去  对面一个@BuilderParam接收 要满足两个条件

  • 只有一个builderParam的时候可以使用尾随闭包
  • 当builderParam没有参数传出的时候 可以用尾随闭包、

子组件:

@Component
struct DandelCom {@State dangleHeight: number = 200@BuilderParamone: () => void = this.aa@Builderaa() {Text('我是默认的方法')}build() {Column() {this.one()}.width('100%').height(this.dangleHeight).backgroundColor(Color.Gray)}
}export { DandelCom }

父组件

import { DandelCom } from './components/DangleCom';@Entry
@Component
struct DangleBuilderPage {@State message: string = 'Hello 尾随闭包';@State Pheight: number = 300build() {Column() {DandelCom({ dangleHeight: this.Pheight, }) {Button('哈咯').width(100).height(60)Button('哈咯2').width(100).height(60)Button('哈咯3').width(100).height(60)}}.height('100%').width('100%')}
}

   

12.状态管理

概述

@State

1.简单类型 直接修改

2.复杂类型  只能检测到第一层 Object.Keys()

@prop

prop传值是单向传递 通常不会在子组件修改prop值  因为父组件一旦变化 会自动同步子组件

若实在想更新   希望保证父子同步=>调用父组件传递过来的方法

 @Link(双向同步)

 代码:

简单类型

看下子组件prop接收 只有子组件更改父组件不更改

看下Link 同步更新

复杂类型的第一层也是可以修改的

复杂类型的多层可以进行修改吗 

点击按钮无法修改  那怎样能修改的  修改它的第一层 看以下代码就能修改啦~

 

@provide和@Consume

代码:

@Observed&@ObjectLink嵌套对象数组 属性变化

代码:

observed必须定义在类上

13List组件

14.Iconfont字体图标的使用

 1.下载icon文件2.引入@ohos.font 3.在aboutApper中试用font.registerFont方法

4.使用字体

15.输入框的值如何实现双向绑定

16.数组如何进行排序(sort)

17.路由

1新建页面2种方式

新建的第2种方式要配路由

2页面的跳转和后退

3路由-页面栈

4 路由模式和路由传参

4.1 路由模式

代码使用

重复跳转的路由使用single模式就不会堆加在路由栈里

4.2 路由传参

代码:

18.生命周期

19.Stage模型

1. 修改应用管理下的图标和信息

代码:

1.

2.

3.

看下应用信息的效果

2. 修改桌面上的图标和信息

代码:

1.

2.点击icon下边的label进入

3.更改信息

4.重启

3. UIAbility组件

4. UIAbility生命周期

怎么设置默认启动的ability

5. 同模块拉起另一个UIAbility

返回一个promise对象 可以用来看返回信息

6. 跨模块拉起另一个UIAbility

跨模块编译的时候需要加个编译配置

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 3-2 光敏电阻(智能应用篇)
  • 构建坚不可摧的防线:全面指南到高效信息安全管理体系
  • 力扣第五十六题——合并区间
  • 设计模式-装饰者模式
  • ubuntu创建txt
  • 2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第二弹 手搓机械臂
  • 搅拌站智能化改造,数字化管理如何助力降本增效?
  • 走心解答hashCode与equals,尽量说明白
  • Windows图形界面(GUI)-MFC-C/C++ - 树形视图(Tree Control) - CTreeCtrl
  • 超声波眼镜清洗机哪个更好用?四款清洁力强的超声波清洗机推荐
  • 24.8.9.11数据结构|链栈和队列
  • 程序人生-Hello’s P2P
  • vue3引入模块报错:无法找到模块“xxx”的声明文件
  • Java 守护线程练习 (2024.8.12)
  • linux 下 QT5如何编译成32位或64的方法
  • [数据结构]链表的实现在PHP中
  • Angular6错误 Service: No provider for Renderer2
  • C++11: atomic 头文件
  • Centos6.8 使用rpm安装mysql5.7
  • CSS居中完全指南——构建CSS居中决策树
  • eclipse的离线汉化
  • Java到底能干嘛?
  • JS 面试题总结
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • MySQL数据库运维之数据恢复
  • supervisor 永不挂掉的进程 安装以及使用
  • 从零开始在ubuntu上搭建node开发环境
  • 机器学习学习笔记一
  • 前端之React实战:创建跨平台的项目架构
  • 小程序 setData 学问多
  • nb
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • #{}和${}的区别是什么 -- java面试
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (C#)获取字符编码的类
  • (pytorch进阶之路)扩散概率模型
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十)c52学习之旅-定时器实验
  • (十八)SpringBoot之发送QQ邮件
  • (十一)图像的罗伯特梯度锐化
  • (四)模仿学习-完成后台管理页面查询
  • (一)80c52学习之旅-起始篇
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 快速重构概要1
  • .net 中viewstate的原理和使用
  • .net和php怎么连接,php和apache之间如何连接
  • @SentinelResource详解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)