当前位置:   article > 正文

鸿蒙基础知识-Fraction初步认识_鸿蒙 fraction

鸿蒙 fraction

一.概述

安卓有fragment组件,那鸿蒙有没有类似的组件呢?其实鸿蒙早就提供了类似于fragment的组件,那就是Fraction。这次就向大家介绍Fraction的使用以及Fraction的生命周期

二.基本概念

  • Fraction
    字面意思是小部分,Fraction可以作为UI的一部分放在Ability或者AbilitySlice中,不能单独使用。Fraction的生命周期状态取决于它的容器。如果容器被销毁,其中的所有部分也将被销毁。可以Fraction使用定义各种布局,以丰富应用程序的用户界面。
  • FractionAbility
    要想使用Fraction,必须让Ability继承FractionAbility
  • FractionManager
    提供管理Fraction生命周期的方法。
  • FractionScheduler
    提供执行Fraction事务的方法

三、简单使用

1、MainAbility继承FractionAbility

  1. public class TestFractionAbility extends FractionAbility {
  2. @Override
  3. public void onStart(Intent intent) {
  4. super.onStart(intent);
  5. super.setMainRoute(TestFractionAbilitySlice.class.getName());
  6. }
  7. }

2、给AbilitySlice创建布局文件

  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:orientation="vertical"
  6. ohos:background_element="$graphic:background_ability_main"
  7. ohos:width="match_parent">
  8. <StackLayout
  9. ohos:id="$+id:test_fraction"
  10. ohos:width="match_parent"
  11. ohos:height="match_parent"/>
  12. </DirectionalLayout>

3、给Fraction创建布局文件

  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:orientation="vertical"
  6. ohos:background_element="$graphic:background_ability_main"
  7. ohos:width="match_parent">
  8. <Text
  9. ohos:background_element="$graphic:background_ability_main"
  10. ohos:height="match_content"
  11. ohos:layout_alignment="horizontal_center"
  12. ohos:text="home fraction"
  13. ohos:text_size="50"
  14. ohos:width="match_content"
  15. />
  16. </DirectionalLayout>

4、创建TestFraction继承Fraction,在onComponentAttached方法里面将TestFraction的布局文件转换成组件对象,最后将组件对象返回。
我们刚刚在AbilitySlice的布局文件中添加了一个栈布局,onComponentAttached方法返回的组件对象会被添加这个栈布局里面。

  1. public class TestFraction extends Fraction {
  2. @Override
  3. protected Component onComponentAttached(LayoutScatter scatter, ComponentContainer container, Intent intent) {
  4. Component component = scatter.parse(ResourceTable.Layout_test_fraction, container, false);
  5. return component;
  6. }
  7. @Override
  8. protected void onStart(Intent intent) {
  9. super.onStart(intent);
  10. }
  11. }

5、在AbilitySlice里面调用getAbility方法,将其强转为FractionAbility,然后调用getFractionManager方法得到FractionManager对象,再调用startFractionScheduler方法开启事务,调用add方法添加fraction,add方法第一个参数就是我们在布局文件中添加的栈布局的id,第二个参数就是TestFraction对象,第三个参数就是给TestFraction设置一个标签,后续可以FractionManager的getFractionByTag方法,来查找我们已经创建好的HomeFraction对象,getFractionByTag方法的参数就是我们在add方法里面给TestFraction设置的标签。最后提交事务。

  1. public class TestFractionAbilitySlice extends AbilitySlice {
  2. @Override
  3. protected void onStart(Intent intent) {
  4. super.onStart(intent);
  5. setUIContent(ResourceTable.Layout_ability_test_fraction);
  6. ((FractionAbility)getAbility()).getFractionManager()
  7. .startFractionScheduler()
  8. .add(ResourceTable.Id_test_fraction, new TestFraction())
  9. .submit();
  10. }
  11. }

代码运行后:

四、Fraction生命周期

Fraction生命周期主要涉及到八个生命周期方法,分别是onComponentAttached、onStart、onActive、onInactive、onBackground、onForeground、onStop、onComponentDetach

  • 启动fraction
    依次调用onComponentAttached、onStart、onActive
  • 按下home键进入后台
    依次调用onInactive、onBackground
  • 重新回到前台
    依次调用onForeground、onActive
  • 退出fraction
    依次调用onInactive、onBackground、onStop、onComponentDetach

五、Fraction的缺点

在实际开发中,我们可能需要让Fraction嵌套Fraction,目前鸿蒙还不支持Fraction嵌套Fraction。

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

闽ICP备14008679号