04. 鸿蒙入门应用

  • 第一个入门应用:HelloWorld

        1. 如何运行项目

        登录账号

                

开启模拟器 

注意: 这个模拟器不是本地模拟器,而是在华为服务器中的,好处是这样的模拟器不需要占用本地的资源了,但在启动之后不能超1个小时,如果超过之后需要重启模拟器。(全程必须联网)

运行程序

        2. 页面中的包含关系

什么是页面(页面的组成)

包含关系:

最外面是:Ability

Ability中是一个或多个子页面:AbilitySlice

子页面中有要展示的内容:图片,文本等信息

问: 为什么会有子页面的存在呢?直接在最外面的页面里面添加文本信息不更简单么?

结论:一个单独的功能,对应着一个Ability。如果这个能力中需要进行切换,那么就可以在Ability中,写多个子页面AbilitySlice进行切换。

补充:和鸿蒙的“可分可合”设计思想有关,图片为一个鸿蒙的完整的APP的安装包结构。它会先把每个Ability文件打包为一个 .Hap文件(也就是说一个Ability对应一个Hap包),然后再把所有的Hap包打包成一个整体的APP。这样做的特点有:“可分可合”的设计思想,当用户用到什么就下载什么,每一个Hap包都可单独下载安装。

  

        3. 学习项目的配置文件:config.json

配置文件的三个部分

 config.json 文件详细说明

        4. 了解程序的运行过程

  • 第二个入门应用:页面跳转

实现步骤

  1. 编写第一个页面(文本 + 按钮)
  2. 编写第二个页面(文本)
  3. 给按钮添加一个跳转

两种编写布局的方式

鸿蒙UI中提供了两种编写布局的方式:

 

XML版

 ability_main代码如下:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="vertical">

    <Text
        ohos:id="$+id:text_helloworld"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:layout_alignment="horizontal_center"
        ohos:text="第一个页面"
        ohos:text_size="40vp"
        />

    <Button
        ohos:id="$+id:but1"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="red"
        ohos:text_size="40fp"
        ohos:text="点我"
        />

</DirectionalLayout>

JAVA版  

删除layout中ability_second__main2.xml文件,并在Second_MainAbility2Slice.java中加注释。图示如下:

​​​​​​​

 Second_MainAbility2Slice.java 中的代码如下:​​​​​​​

package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.agp.utils.Color;

public class SecondMainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        //super.setUIContent(ResourceTable.Layout_ability_second_main);

        //1. 创建布局对象
        DirectionalLayout dl = new DirectionalLayout(this);

        //2. 创建文本对象
        Text t = new Text(this);
        //设置内容
        t.setText("第二个页面");
        //设置文字大小
        t.setTextSize(55);
        //设置文字颜色
        t.setTextColor(Color.BLUE);

        //3. 把文本对象添加到布局当中
        dl.addComponent(t);

        //4. 把布局添加到子界面当中
        super.setUIContent(dl);
    }
    @Override
    public void onActive() { super.onActive(); }

    @Override
    public void onForeground(Intent intent) { super.onForeground(intent); }
}

MainAbilitySlice.java 中的代码如下:​​​​​​​​​​​​​​

package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Button;
import ohos.agp.components.Component;

public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {
    Button btu;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        //1. 找到按钮
        btu = (Button) findComponentById(ResourceTable.Id_but1);

        //2. 给按钮添加一个点击事件
        //如果没有添加点击事件,那么用鼠标点击按钮之后是没有任何反应的
        //如果添加了点击事件,那么用鼠标点击按钮之后,就可以执行对应的代码
        btu.setClickedListener(this);
        //理解方式:
        //给btu这个按钮添加了点击事件
        //当点击了btu这个按钮之后,就可以执行按钮中onClick的方法
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

    @Override
    public void onClick(Component component) {
        //点击按钮之后执行要执行的代码
        //跳转到第二个页面中
        if (component == btu)
        {
            //只有点击了btu这个按钮之后,才进行跳转

            //跳转到那个页面中(意图)
            Intent i =new Intent();
            //包含了要跳转的页面信息
            Operation operation =  new Intent.OperationBuilder()
                    .withDeviceId("") //要跳转到到哪个设备上,如果传递一个没有内容的字符串,表示跳转本机
                    .withBundleName("com.example.myapplication") //跳转到哪个应用上,小括号里可以写包名
                    .withAbilityName("com.example.myapplication.SecondMainAbility")//要跳转的页面
                    .build();//表示将上面的三个信息进行打包
            //把打包之后的operation对象去设置到意图当中
            i.setOperation(operation);
            //跳转页面
            startAbility(i);
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值