0%

鸿蒙开发速览

鸿蒙开发(HarmonyOS) 的基本语法主要依赖于 Java 和 **ArkTS (Ark TypeScript)**,适用于构建应用程序的两种主流编程语言。以下内容涵盖鸿蒙开发的基本语法,包括 Java 和 ArkTS 的语法、页面组件开发、事件绑定以及资源管理等。


一、开发语言

1.1 Java

鸿蒙系统的 Java 开发方式类似于 Android,主要用于开发基于 Java 的应用。

入口类

  • Java 应用的入口类是 AbilityAbilitySlice
1
2
3
4
5
6
7
8
9
10
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;

public class MainAbility extends Ability {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
}
}
  • Ability 是鸿蒙的组件基类。
  • setMainRoute 用于设置默认的页面。

页面开发

  • 页面由 AbilitySlice 表示,用于定义 UI 和逻辑。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Text;
import ohos.agp.components.ComponentContainer;
import ohos.agp.components.LayoutScatter;

public class MainAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
Text text = new Text(getContext());
text.setText("Hello HarmonyOS!");
text.setTextSize(50);
super.setUIContent(text);
}
}

1.2 ArkTS (Ark TypeScript)

ArkTS 是基于 TypeScript 的语言,用于声明式 UI 开发。鸿蒙推荐使用 ArkTS 构建跨平台的轻量级应用。

入口文件

ArkTS 应用的入口是 app.ts

1
2
3
4
5
6
7
8
9
10
11
@Entry
@Component
struct MyApp {
build() {
Column() {
Text("Hello, HarmonyOS!")
.fontSize(24)
.padding(10)
}
}
}
  • @Entry:标识应用的入口组件。
  • @Component:定义页面组件。

二、页面与布局

2.1 布局组件

ArkTS 提供了一些常用布局组件,类似于 React 的 JSX 或 Flutter 的 Widget。

常用布局

布局组件 描述
Column 垂直布局
Row 水平布局
Stack 层叠布局
Flex 弹性布局

布局示例

1
2
3
4
5
6
7
8
9
10
11
12
@Entry
@Component
struct MyApp {
build() {
Column() {
Text("Welcome to HarmonyOS").fontSize(20)
Button("Click Me").onClick(() => {
console.log("Button clicked");
})
}
}
}

2.2 页面跳转

路由配置

app.json 中配置路由。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"router": {
"entry": "pages/index",
"pages": {
"pages/index": {
"component": "Index"
},
"pages/detail": {
"component": "Detail"
}
}
}
}

页面跳转示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Entry
@Component
struct Index {
build() {
Button("Go to Detail")
.onClick(() => {
router.push({ uri: "pages/detail" });
})
}
}

@Component
struct Detail {
build() {
Text("This is the detail page")
}
}

三、事件绑定

3.1 点击事件

在 ArkTS 中,通过 onClick 绑定点击事件。

1
2
3
4
Button("Click Me")
.onClick(() => {
console.log("Button clicked");
})

3.2 输入事件

1
2
3
4
TextField({ placeholder: "Enter text" })
.onChange((value) => {
console.log(`Input value: ${value}`);
})

3.3 Java 中事件处理

Java 开发中,通过组件的 setClickedListener 方法绑定事件。

1
2
3
4
5
Button button = new Button(getContext());
button.setText("Click Me");
button.setClickedListener(component -> {
System.out.println("Button clicked");
});

四、状态管理

4.1 ArkTS 中的状态

通过 @State 修饰符管理组件状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Entry
@Component
struct CounterApp {
@State count: number = 0;

build() {
Column() {
Text(`Count: ${this.count}`).fontSize(20)
Button("Increment")
.onClick(() => {
this.count++;
})
}
}
}

4.2 Java 中的状态

Java 中可以通过变量和监听器实现状态管理。

1
2
3
4
5
6
7
8
9
10
11
12
13
private int count = 0;

@Override
public void onStart(Intent intent) {
super.onStart(intent);
Button button = new Button(getContext());
button.setText("Count: " + count);
button.setClickedListener(component -> {
count++;
button.setText("Count: " + count);
});
super.setUIContent(button);
}

五、资源管理

5.1 资源文件

  • ArkTS 中资源文件

    • 配置在 resources/base/media 目录下。
  • 示例:加载图片。

    1
    2
    3
    Image($r('media.icon'))
    .width(100)
    .height(100)
  • Java 中资源文件

    1
    2
    Image image = new Image(getContext());
    image.setPixelMap(ResourceTable.Media_icon);

5.2 国际化

resources/base/profile 下定义国际化文件。

示例

  • zh.json:

    1
    2
    3
    {
    "welcome": "欢迎使用鸿蒙系统"
    }
  • 使用国际化资源:

    1
    Text($r('strings.welcome'))

六、鸿蒙独有特性

6.1 分布式能力

鸿蒙支持设备之间的分布式操作,以下是基本开发场景。

跨设备文件传输

1
2
3
4
5
6
7
DistributedFile.transferFile({
uri: "internal://app/file.txt",
deviceId: "remoteDeviceId",
success: () => {
console.log("File transferred successfully");
}
});

6.2 自定义组件

ArkTS 支持自定义组件。

1
2
3
4
5
6
7
8
9
10
@Component
struct CustomButton {
@Prop text: string;

build() {
Button(this.text)
.fontSize(18)
.padding(10)
}
}

七、工具链与构建

7.1 DevEco Studio

  • 鸿蒙官方的开发工具,基于 Android Studio。
  • 提供调试、打包、模拟器运行等功能。

7.2 编译与运行

通过 DevEco Studio 或命令行编译应用。

1
2
hpm build
hpm run

总结

1. 基本语法

  • Java: 类似于 Android 开发,基于 AbilityAbilitySlice
  • ArkTS: 声明式语法,类似于 React 或 Flutter,推荐用于新项目。

2. 高级功能

  • 状态管理: @State 修饰符和监听器。
  • 事件绑定: onClickonChange 等。
  • 分布式能力: 支持跨设备协同操作。

3. 工具与资源

  • 使用 DevEco Studio 提供的全套开发工具。
  • 资源文件支持国际化和跨平台适配。

通过掌握这些基础和高级特性,可以快速上手并开发高质量的鸿蒙应用程序。