鸿蒙开发(HarmonyOS) 的基本语法主要依赖于 Java 和 **ArkTS (Ark TypeScript)**,适用于构建应用程序的两种主流编程语言。以下内容涵盖鸿蒙开发的基本语法,包括 Java 和 ArkTS 的语法、页面组件开发、事件绑定以及资源管理等。
一、开发语言
1.1 Java
鸿蒙系统的 Java 开发方式类似于 Android,主要用于开发基于 Java 的应用。
入口类
- Java 应用的入口类是
Ability
或 AbilitySlice
。
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. 基本语法
- Java: 类似于 Android 开发,基于
Ability
和 AbilitySlice
。
- ArkTS: 声明式语法,类似于 React 或 Flutter,推荐用于新项目。
2. 高级功能
- 状态管理:
@State
修饰符和监听器。
- 事件绑定:
onClick
、onChange
等。
- 分布式能力: 支持跨设备协同操作。
3. 工具与资源
- 使用 DevEco Studio 提供的全套开发工具。
- 资源文件支持国际化和跨平台适配。
通过掌握这些基础和高级特性,可以快速上手并开发高质量的鸿蒙应用程序。