当前位置:   article > 正文

04. 鸿蒙入门应用_ability 打包 hap

ability 打包 hap
  • 第一个入门应用: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代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <DirectionalLayout
  3. xmlns:ohos="http://schemas.huawei.com/res/ohos"
  4. ohos:height="match_parent"
  5. ohos:width="match_parent"
  6. ohos:alignment="center"
  7. ohos:orientation="vertical">
  8. <Text
  9. ohos:id="$+id:text_helloworld"
  10. ohos:height="match_content"
  11. ohos:width="match_content"
  12. ohos:background_element="$graphic:background_ability_main"
  13. ohos:layout_alignment="horizontal_center"
  14. ohos:text="第一个页面"
  15. ohos:text_size="40vp"
  16. />
  17. <Button
  18. ohos:id="$+id:but1"
  19. ohos:height="match_content"
  20. ohos:width="match_content"
  21. ohos:background_element="red"
  22. ohos:text_size="40fp"
  23. ohos:text="点我"
  24. />
  25. </DirectionalLayout>

JAVA版  

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

​​​​​​​

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

  1. package com.example.myapplication.slice;
  2. import com.example.myapplication.ResourceTable;
  3. import ohos.aafwk.ability.AbilitySlice;
  4. import ohos.aafwk.content.Intent;
  5. import ohos.agp.components.DirectionalLayout;
  6. import ohos.agp.components.Text;
  7. import ohos.agp.utils.Color;
  8. public class SecondMainAbilitySlice extends AbilitySlice {
  9. @Override
  10. public void onStart(Intent intent) {
  11. super.onStart(intent);
  12. //super.setUIContent(ResourceTable.Layout_ability_second_main);
  13. //1. 创建布局对象
  14. DirectionalLayout dl = new DirectionalLayout(this);
  15. //2. 创建文本对象
  16. Text t = new Text(this);
  17. //设置内容
  18. t.setText("第二个页面");
  19. //设置文字大小
  20. t.setTextSize(55);
  21. //设置文字颜色
  22. t.setTextColor(Color.BLUE);
  23. //3. 把文本对象添加到布局当中
  24. dl.addComponent(t);
  25. //4. 把布局添加到子界面当中
  26. super.setUIContent(dl);
  27. }
  28. @Override
  29. public void onActive() { super.onActive(); }
  30. @Override
  31. public void onForeground(Intent intent) { super.onForeground(intent); }
  32. }

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

  1. package com.example.myapplication.slice;
  2. import com.example.myapplication.ResourceTable;
  3. import ohos.aafwk.ability.AbilitySlice;
  4. import ohos.aafwk.content.Intent;
  5. import ohos.aafwk.content.Operation;
  6. import ohos.agp.components.Button;
  7. import ohos.agp.components.Component;
  8. public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {
  9. Button btu;
  10. @Override
  11. public void onStart(Intent intent) {
  12. super.onStart(intent);
  13. super.setUIContent(ResourceTable.Layout_ability_main);
  14. //1. 找到按钮
  15. btu = (Button) findComponentById(ResourceTable.Id_but1);
  16. //2. 给按钮添加一个点击事件
  17. //如果没有添加点击事件,那么用鼠标点击按钮之后是没有任何反应的
  18. //如果添加了点击事件,那么用鼠标点击按钮之后,就可以执行对应的代码
  19. btu.setClickedListener(this);
  20. //理解方式:
  21. //给btu这个按钮添加了点击事件
  22. //当点击了btu这个按钮之后,就可以执行按钮中onClick的方法
  23. }
  24. @Override
  25. public void onActive() {
  26. super.onActive();
  27. }
  28. @Override
  29. public void onForeground(Intent intent) {
  30. super.onForeground(intent);
  31. }
  32. @Override
  33. public void onClick(Component component) {
  34. //点击按钮之后执行要执行的代码
  35. //跳转到第二个页面中
  36. if (component == btu)
  37. {
  38. //只有点击了btu这个按钮之后,才进行跳转
  39. //跳转到那个页面中(意图)
  40. Intent i =new Intent();
  41. //包含了要跳转的页面信息
  42. Operation operation = new Intent.OperationBuilder()
  43. .withDeviceId("") //要跳转到到哪个设备上,如果传递一个没有内容的字符串,表示跳转本机
  44. .withBundleName("com.example.myapplication") //跳转到哪个应用上,小括号里可以写包名
  45. .withAbilityName("com.example.myapplication.SecondMainAbility")//要跳转的页面
  46. .build();//表示将上面的三个信息进行打包
  47. //把打包之后的operation对象去设置到意图当中
  48. i.setOperation(operation);
  49. //跳转页面
  50. startAbility(i);
  51. }
  52. }
  53. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/318705
推荐阅读
相关标签
  

闽ICP备14008679号