美文网首页HarmonyOS应用开发基础篇
【HarmonyOS应用开发】Hello HarmonyOS到H

【HarmonyOS应用开发】Hello HarmonyOS到H

作者: 白晓明 | 来源:发表于2020-11-09 20:19 被阅读0次

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

    创建第二个页面

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


    页面名称我们命名为SecondAbility,其中Launcher AbilityVisible我们先不用勾选。

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

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

    首页添加跳转按钮

    接下来实现页面跳转,我们先在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);
        }
    

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

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


    点击按钮是否跳转

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


    结语

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

    相关文章

      网友评论

        本文标题:【HarmonyOS应用开发】Hello HarmonyOS到H

        本文链接:https://www.haomeiwen.com/subject/pqerbktx.html