【01】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-ArkTs基础语法与界面开发基础

序言:

随着国家政府的支持,越来越多的高校把安卓课程替换为鸿蒙开发课程,目前已有23家985高校、46家211高校已开设或即将开设HarmonyOS相关课程。未来IOS、安卓、鸿蒙大有三分天下的局势。

作为软件工程系学生,或许鸿蒙开发语言并不像Java、C++这种经典的编程语言可以直接找到如单独使用Java语言工作的开发岗位,但技多不压身,鸿蒙开发语言的火热是大势所趋,学会鸿蒙至少可以起到锦上添花的作用。

笔者也是跟着B站黑马的课程一步步学习,学习的过程中添加部分自己的想法整理为笔记分享出来,如有代码错误或笔误,欢迎指正。

B站黑马的课程链接:鸿蒙课程介绍_哔哩哔哩_bilibili

目录

Part1.ArkTs基础语法

零.认识数据与基础知识:

一.变量:专门用来存储数据的容器

二.常量:用来存储数据(不可变)

三.数组:是一个容器,可以存储多个数据

四.函数:是可以被重复使用的代码块

五.箭头函数:箭头函数是比普通函数更简洁的一种函数写法

六.对象:用于描述一个物体的特征和行为,是一个可以存储多个数据的容器

七.对象-方法:

八.联合类型:

九.枚举类型

Part2.界面开发基础

零.准备阶段

一.布局思路

二.组件的属性方法

三.综合案例01-华为登陆


Part1.ArkTs基础语法

零.认识数据与基础知识:

1.开发环境:

①前往鸿蒙官网下载DevEco Studio:DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟

一路点击安装→打开软件

首先我们不用去管左侧这一堆乱七八糟的代码,刚开始看也看不懂,我们打开entry/src/main/ets/pages/Index.ets

在@Entry上面就可以进行ArkTs的代码练习

2.基本数据类型

①字符串string

②数字number

③布尔常量boolean

一.变量:专门用来存储数据的容器

语法:let 变量名:变量类型

let title:string = '河马蛋糕'
let price number = 18
let isSelect:boolean = true

1.变量的存储

//console.log('消息说明','打印的内容')
console.log('i say','Hello World')
//1.1 字符串 string 类型
let title:string ='河马蛋糕'
console.log('字符串title',title)
//1.2 数字 number 类型
let age:number = 18
console.log('年纪',age)
//1.3 布尔 boolean 类型 (true和false)
let isLogin:boolean = true
console.log('是否登录成功',isLogin)

2.变量的修改

age = 77
console.log('年纪',age)

二.常量:用来存储数据(不可变)

语法:const 变量名:变量类型

//常量
const PI:number = 3.14
console.log('PI',PI)
const companyName:string = '华为'
console.log('公司名',companyName)

tip:命名规则:

①只能包含数字、字母、下划线、$,不能以数字开头

②不能使用内置关键词(如let、const)

③严格区分大小写

三.数组:是一个容器,可以存储多个数据

语法:let 数组名:类型[] =[数据1,数据2,...]

let names:string[]=['小红','小绿','小蓝'] 

例子:

//学生数组
//语法:
//let 数组名:类型[] =[数据1,数据2,...]
//数组中存储的每个数据,都有自己的编号,编号从0开始(索引)
let names:string[]=['赵泥笨','于霸虚','曹温暖','谷鱼沼']
console.log('数组names',names)
//利用有序编号(索引)取数组的数据
//取数据:数组名[索引]
console.log('取到了',names[3])

四.函数:是可以被重复使用的代码块

语法:

①定义函数

function 函数名(){ 函数体 }

②调用函数

函数名()

//函数例子
function star(){
  console.log('五角星','★')
  console.log('五角星','★★')
  console.log('五角星','★★★')
  console.log('五角星','★★★★')
  console.log('五角星','★★★★★')
}
star()
star()
star()

函数的完整用法:

function 函数名(需要处理的数据(形参)){

编写代码对数据进行处理

return 处理后的结果

}

let 变量名:类型 = 函数名(实际要处理的数据(实参))

//完整函数调用
//用一个函数,实现如下需求
//传入 价格 和 数量,返回 计算的结果
//1.苹果2元一斤,买三斤多少钱?
//2.河马4元一斤,买四斤多少钱?
function buy(price:number,num:number){
  //1.处理数据
  let sum:number=price*num
  //2.返回结果
  return sum
}
console.log('买苹果花了',buy(2,3))
console.log('买河马花了',buy(4,4))

五.箭头函数:箭头函数是比普通函数更简洁的一种函数写法

语法:

let 函数名 = (形参1:类型,形参2:类型,)=>{

//函数体}

函数名(实参1,实参2)

//箭头函数编写上面两个例子
let star1 = ()=>{
  console.log('五角星','★')
  console.log('五角星','★★')
  console.log('五角星','★★★')
  console.log('五角星','★★★★')
  console.log('五角星','★★★★★')
}


let buy1 =(price:number,num:number)=>{
  let result = price*num
  return result
}
console.log('箭头函数买苹果花了',buy1(2,3))
console.log('箭头函数买河马花了',buy1(4,4))

六.对象:用于描述一个物体的特征和行为,是一个可以存储多个数据的容器

语法:

let 对象名称:对象结构类型 = 值

1.通过interface借口约定 对象结构类型

/*interface 接口名{
 属性1:类型1
 属性2:类型2
 属性3:类型3
}*/
interface Person{
  name:string
  age:number
  weight:number
}

2.定义对象并使用

let hippopotamus:Person={
  name:'河马',
  age:18,
  weight:8888
}

3.获取对象属性值 语法:对象名.属性名

console.log('体重',hippopotamus.weight)

七.对象-方法:

方法作用:描述对象的具体行为

1.约定方法(对象内部规定好的函数)类型

/*interface 接口名称{
  方法名:(参数:类型)=>返回值类型
}*/
interface Person{
  //①定义内部属性
  name:string
  age:number
  weight:number
  //②声明基于接口,定义对象方法
  dance:()=>void
  sing:(song:string)=>void
}

2.添加方法(箭头函数)

let hippopotamus:Person = {
  name:'河马',
  age:18,
  weight:8888,
  dance:()=>{
    console.log('河马说','我来跳个舞')
  },
  sing:(song:string)=>{
    console.log('河马说','我来唱一个',song)
  }
}

3.调用对象里的方法

hippopotamus.dance()
hippopotamus.sing('小河马爱洗澡')

八.联合类型:

联合类型是一种灵活的数据类型,它修饰的变量可以存储不同类型的数据

语法:let 变量:类型1|类型2|类型3 = 值

//需求:定义一个变量,存放【年终考试评价】
//考试评价:可能是具体的分数,也可能是A/B/C/D等级
let judge:number|string = 100
console.log('年终考试评价',judge)
judge = 'A+'
console.log('年终考试评价',judge)

联合类型可以将变量值,约定在一组数据范围内进行选择

如性别: 男 女 保密

let gender:'man'|'woman'|'secret'='man'

九.枚举类型

枚举类型是一种特殊的数据类型,约定变量只能在一组数据范围内选择值,如下图

语法:

/*enum 枚举名{
  常量1 = 值,
  常量2 = 值,
  ......
}*/

//1.定义枚举列表(常量列表)

enum ThemeColor{
  Red = '#ff0f29',
  Orange = '#ff7100',
  Green = '#30b30e'
}

//2.给变量设置枚举类型

let  color:ThemeColor = ThemeColor.Orange
console.log('color',color)

Part2.界面开发基础

零.准备阶段

在bulid里进行代码编写,在预览器观看代码效果

简单修改基础代码,查看效果

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50) //设置文本的文字大小
        .fontWeight(FontWeight.Bold) //设置文本的粗细
        .fontColor(Color.Blue) //设置文本的颜色
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }

一.布局思路

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

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

1.组建分类:

①基础组件:界面呈现的基础元素。

如:文字、图片、按钮等。

②容器组件:控制布局排布。

如:Row行、Column列等。

2.组件语法:

①容器组件:行Row、列Column

容器组件(){
//内容
}

②基础组件:文字Text、图片

基础组件(参数)

例子:

build() {
    //布局思路:先排版,再内容
    Column(){
      //内容
      Text('河马品种')
      Row(){
        Text('暴怒')
        Text('笨拙')
        Text('嗜睡')
        Text('嘤嘤')
      }
    }
  }

二.组件的属性方法

需求:美化组件的外观效果→组件的属性方法

组件属性方法

描述

.weigh(200)

宽度

.height(200)

高度

.backgroundColor(Color.Pink)

背景色

.fontSize(24)

字体大小

.fontWeight(FontWeight.Bold)

字体粗细

  build() {
    //布局思路:先排版,再内容
    Column(){
      //内容
      Text('河马品种')
        .height(60)
        .fontSize(30)
        .fontWeight(FontWeight.Bold) //可以填写100~900的数字 加粗700 默认400
        .width('100%')
      Row(){
        Text('暴怒')
          .width(50)
          .height(30)
          .backgroundColor(Color.Brown)
        Text('笨拙')
          .width(50)
          .height(30)
          .backgroundColor(Color.Green)
        Text('嗜睡')
          .width(50)
          .height(30)
          .backgroundColor(Color.Orange)
        Text('嘤嘤')
          .width(50)
          .height(30)
          .backgroundColor(Color.Pink)
      }
      .width('100%')
    }
    .width('100%')
  }

1.字体颜色

①枚举颜色 Color.颜色名

.fontColor(Color.Red)

②#开头的16进制

.fontColor('#df3c50')

2.文字溢出省略号、行高

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

语法:

    .textOverflow({
      overflow:TextOverflow.XXX
    })
    //注意:需要配合.maxLines(行数)使用

②行高

语法:

.lineHeight(数字)

综合案例:

build() {
    /*
    .textOverflow({
      overflow:TextOverflow.XXX
    })
    //注意:需要配合.maxLines(行数)使用*/
    Column(){
      Text('河马简介')
        .fontSize(30)
        .fontWeight(FontWeight.Bold)
      Text('河马,是偶蹄目河马科河马属半水生哺乳动物。河马是淡水中最大的杂食性哺乳动物,体型巨大,四肢短;头粗硕;嘴大,可以张开呈90度角;河马的门齿和犬齿均呈獠牙状,下门齿像铲子一样向前面平行伸出;河马的眼睛、鼻孔、耳壳等都生在面部的上端,几乎在同一个平面上;河马皮肤很厚,呈黑褐色兼赤紫色,光滑无毛,仅在嘴端、耳内侧和尾巴上有一些毛。河马一词的意思是指“河中之马”,这是希腊人对这种强悍野兽的称呼')
        .textOverflow({
          overflow:TextOverflow.Ellipsis
        })
        .maxLines(3)
        .lineHeight(24)
    }
  }

3.Image图片组件

作用:界面中展示图片

语法:

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

Image($r('app.media.文件名')) //可以直接定位到这个文件夹里的图片

实例:

 build() {

    Column(){
      //1.网络图片加载
      Image('https://bkimg.cdn.bcebos.com/pic/3ac79f3df8dcd100796032fd738b4710b8122f6a?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080')
        .height(200)
      //2.本地图片加载 Image($r('app.media.文件名'))
      Image($r('app.media.1'))
        .height(200)
      Text('河马生活照片')
      Row(){
        Image($r('app.media.2'))
          .width(50)
        Text('好可爱的河马宝宝')
      }
      .width('100%')
    }
  }

4.输入框和按钮

需求:实现登陆或注册的排版→ 输入框 和 按钮 组件

//输入框
TextInput(参数对象)
.属性方法()
//按钮
Button('按钮文本')

①参数对象:placeholder 提示文本

TextInput({
      placeholder:'占位符文本'
    })

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

type值

解释说明

Normal

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

Password

密码输入模式

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

案例:

  build() {
//控制组件间的距离,可以给Column设置{space:间隙大小}
    Column({space:15}){
      TextInput({
        placeholder:'请输入用户名'
      })
      TextInput({
        placeholder:'请输入密码'
      }).type(InputType.Password)
      Button('登陆')
        .width(200)
    }
  }

三.综合案例01-华为登陆

1.构建界面思路:

①排版(分析布局)

②内容(基础组件)

③美化(属性方法)

build() {
    /*1.构建界面思路:
    ①排版(分析布局)
    ②内容(基础组件)
    ③美化(属性方法)*/
    Column({space:15}){
      //华为图标
      Image($r('app.media.huawei'))
        .width(50)
      //输入框
      TextInput({
        placeholder:'请输入用户名'
      })
      TextInput({
        placeholder:'请输入密码'
      }).type(InputType.Password)
      //登录按钮
      Button('登陆')
        .width('100%')
      //前往注册和忘记密码部分用Row
      Row({space:15}){
        Text('前往注册')
        Text('忘记密码')
      }
    }
    //内边距padding 间隙space
    .padding(20)
    .width('100%')
  }

感谢阅读。

  • 30
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值