PageAbility是Ability三大类之一,其他两大类是Service Ability,Data Ability。PageAbility是可视化的,即是有界面的。一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。
新建一个项目,我们先了解一下其页面布局:
首先页面显示基本都是xml页面布局
<?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="$string:mainability_HelloWorld"
ohos:text_size="40vp"
/>
</DirectionalLayout>
然后,新建MainAbilitySlice类继承AbilitySlice,在该类中设置布局页面setUIContent(),代码如下:
public class MainAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
其中在setUIContent()中设置的页面布局参数是自动生成,是根据你命名的xml,并在其前面加上layout。比如:你新建一个a.xml布局文件,然后再ResourceTable里面就自动生成了Layout-a的布局Id。我们在上述代码中也可以看到我们新建了ability-main.xml,调用的布局id是Layout_ability_main。
然后我们在MainAbility中的设置要显示的页面,通过调用
setMainRoute(MainAbilitySlice.class.getName())实现
,代码如下:
public class MainAbility extends Ability {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
}
}
我们看一下运行效果图:
至此最基本的一个新建项目,新建页面,设置页面,基本完成。
一个page可以包含多个abilitySlice,但是Page进入前台时界面默认只展示一个AbilitySlice,因此,多个Slice间的切换就需要用到abilitySlice路由配置。
默认展示的AbilitySlice是通过setMainRoute()方法来指定的。如果需要更改默认展示的AbilitySlice,可以通过addActionRoute()方法为此AbilitySlice配置一条路由规则。
//添加actionRoute
addActionRoute(ACTION, SecondSlice.class.getName());