HarmonyOS鸿蒙开发之06 通过代码创建页面 Feature Ability-鸿蒙开发者社区-51CTO.COM

HarmonyOS鸿蒙开发之06 通过代码创建页面 Feature Ability

killads
发布于 2020-9-16 12:49
浏览
0收藏

实战需求


本期,我们来从零开始通过代码创建一个页面

 
前期文章

 

 

通过代码编写您的第一个鸿蒙App页面

 

1、创建Feature Ability

 

1.1 什么是 Feature Ability

 

Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。

 

  • FA支持Page Ability:

Page模板是FA唯一支持的模板,用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。

  • PA支持Service Ability和Data Ability:
    Service模板:用于提供后台运行任务的能力。
    Data模板:用于对外部提供统一的数据访问抽象。


3.1 创建 Empty Feature Ability(Java)


在“Project”窗口,打开“entry > src > main > java”,右键点击“com.example.myapplication”文件夹,选择“New > Ability > Empty Feature Ability(Java)”。

HarmonyOS鸿蒙开发之06 通过代码创建页面 Feature Ability-鸿蒙开发者社区

 

3.2 配置Ability


配置Ability时,将“Page Name”设置为“SecondAbility”,点击“Finish”。创建完成后,可以看到新增了“SecondAbility”和“SecondAbilitySlice”文件。

HarmonyOS鸿蒙开发之06 通过代码创建页面 Feature Ability-鸿蒙开发者社区

HarmonyOS鸿蒙开发之06 通过代码创建页面 Feature Ability-鸿蒙开发者社区

 

4、用 代码编写界面


《 HarmonyOS鸿蒙开发之05 运行第一个页面 (教程含源码)》中,我们用XML的方式编写了一个包含文本和按钮的页面。为了帮助开发者熟悉在代码中创建布局的方式,接下来我们使用此方式编写第二个页面。

 

打开 “SecondAbilitySlice.java”文件,添加一个文本,示例代码如下:

package com.example.myapplication.slice;
 
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.DependentLayout;
import ohos.agp.components.DependentLayout.LayoutConfig;
import ohos.agp.components.Text;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
 
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_PARENT;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
 
public class SecondAbilitySlice extends AbilitySlice {
 
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        // 声明布局
        DependentLayout myLayout = new DependentLayout(this);
        // 设置布局大小
        myLayout.setWidth(MATCH_PARENT);
        myLayout.setHeight(MATCH_PARENT);
        ShapeElement element = new ShapeElement();
        element.setRgbColor(new RgbColor(0, 0, 0));
        myLayout.setBackground(element);
 
        // 创建一个文本
        Text text = new Text(this);
        text.setText("Nice to meet you.");
        text.setWidth(MATCH_PARENT);
        text.setTextSize(55);
        text.setTextColor(Color.WHITE);
        // 设置文本的布局
        DependentLayout.LayoutConfig textConfig = new DependentLayout.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT);
        textConfig.addRule(LayoutConfig.CENTER_IN_PARENT);
        text.setLayoutConfig(textConfig);
        myLayout.addComponent(text);
 
        super.setUIContent(myLayout);
    }
 
    @Override
    public void onActive() {
        super.onActive();
    }
 
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

 

 

作者:知识大胖

来源:CSDN

分类
已于2020-9-21 16:39:55修改
1
收藏
回复
举报
4条回复
按时间正序
/
按时间倒序
白居易OvO
白居易OvO

 请教一下,右键点击“com.example.myapplication”文件夹 ->new 没有Ability这个选项。

 有遇到过这个问题吗

回复
2020-9-25 12:09:48
新新人类
新新人类 回复了 白居易OvO
请教一下,右键点击“com.example.myapplication”文件夹 ->new 没有Ability这个选项。 有遇到过这个问题吗

我没有遇到过哎 这个问题还挺清奇

回复
2020-9-25 13:27:19
白居易OvO
白居易OvO 回复了 新新人类
我没有遇到过哎 这个问题还挺清奇

...... 

回复
2020-9-25 14:03:12
白居易OvO
白居易OvO 回复了 白居易OvO
请教一下,右键点击“com.example.myapplication”文件夹 ->new 没有Ability这个选项。 有遇到过这个问题吗

重启电脑就好了。 大家记得装完环境重启一下电脑

回复
2020-9-25 14:17:27
回复
    相关推荐