HarmonyOS将,【HarmonyOS应用开发】Hello HarmonyOS到Hi HarmonyOS(3)

前两节我们熟悉了项目创建、运行查看效果、以及目录结构等,本节将完成本次HarmonyOS体验的最后一步 — 页面跳转。

创建第二个页面

新建一个Empty Feature Ability(Java),看意思是一个空的元程序,其实不是,它里面还有模板的一些代码,后续我们可以删除重写。

c980dc5df7b833d73f0007fab19bbf0b.png页面名称我们命名为“SecondAbility”,其中Launcher Ability和Visible我们先不用勾选。

c7abb2c1e0f4640469ba2208a2255be2.png点击完成后,我们查看目录结构,会发现多了SecondAbility和SecondAbilitySlice。Page是由一个或多个AbilitySlice构成,因此在创建时会默认创建一个AbilitySlice,页面具体的UI则在AbilitySlice中或者使用XML构建。

2d8020a6097a4e514ec106f19519be88.png打开config.json我们会在module的abilities中看到我们新建的页面,这里存放着当前模块内的所有Ability。

a94ed4b46e78a92ed208812ad01abe58.png首页添加跳转按钮

接下来实现页面跳转,我们先在MainAbilitySlice中新增一个按钮并给按钮添加监听事件,代码如下。

@Override

public void onStart(Intent intent) {

super.onStart(intent);

LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);

myLayout.setLayoutConfig(config);

//子组件对齐方式

myLayout.setAlignment(LayoutAlignment.HORIZONTAL_CENTER);

//控件的排列方向

myLayout.setOrientation(Component.VERTICAL);

ShapeElement element = new ShapeElement();

element.setRgbColor(new RgbColor(255, 255, 255));

myLayout.setBackground(element);

Text text = new Text(this);

/**

* 因为我们的布局是MATCH_PARENT,若还是用这个属性的话,我们新增的控件将看不到

* 因此我们需要自定义其高宽的属性为MATCH_CONTENT

* MATCH_PARENT:表示组件大小将扩展为父组件允许的最大值,它将占据父组件方向上的剩余大小

* MATCH_CONTENT:表示组件大小与它的内容占据的大小范围相适应

*/

// text.setLayoutConfig(config);

text.setWidth(LayoutConfig.MATCH_CONTENT);

text.setHeight(LayoutConfig.MATCH_CONTENT);

text.setText("Hello HarmonyOS");

text.setTextColor(new Color(0xFF000000));

text.setTextSize(50);

myLayout.addComponent(text);

ShapeElement btnEle = new ShapeElement();

btnEle.setRgbColor(new RgbColor(0, 150, 136));

Button button = new Button(this);

button.setText("跳转到第二页");

button.setPadding(10, 20, 10, 20);

button.setTextSize(50);

button.setTextColor(new Color(0xFFFFFFFF));

button.setBackground(btnEle);

/**

* Button 监听点击事件

*/

button.setClickedListener(lister -> {

/**

* 同一Page跳转使用present()方法

*/

// present(new SecondAbilitySlice(), new Intent());

Intent btnIntent = new Intent();

/**

* 不同Page间跳转,由于不同Page的AbilitySlice相互不可见,所以不能使用present()方法跳转,

* 需要配置Intent的Action导航到目标的AbilitySlice

* 两种方法使用感觉不同Page间跳转时,有明显的差别,这个在后续会详细说明

*/

Operation operation = new Intent.OperationBuilder()

.withDeviceId("")

.withBundleName("com.ming.helloharmonyos")

.withAbilityName("com.ming.helloharmonyos.SecondAbility")

.build();

btnIntent.setOperation(operation);

startAbility(btnIntent);

});

myLayout.addComponent(button);

super.setUIContent(myLayout);

}

页面跳转需要使用Intent。Intent是对象之间传递信息的载体,如当一个Ability需要启动另一个Ability时,或者一个AbilitySlice需要导航到另一个AbilitySlice时,可以通过Intent指定启动的目标同时携带相关数据。这个不作为本小节的主要内容。

页面跳转有两种情况,同一Page跳转和不同Page跳转。上面代码中我将两种方式都写在里面了,你也可以试试。

7754b50cc6d57ed5b32c4c0234a8e32f.png

点击按钮是否跳转

运行我们的程序,然后点击按钮查看是否是我们需要的效果。

f6beed307bc4fddf49cff48f1f99278e.png结语:

以上就是我首次熟悉认识HarmonyOS应用开发的一个简单的过程,没有繁琐的理论知识,也没有复杂的代码,仅仅是一个小小的案例。后面我将从HarmonyOS系统概述、配置环境、开发工具、特殊的能力Ability、布局和控件、媒体、网络、及应用案例来进行入门到会使用,也就是基础篇。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值