您当前的位置: 首页 >  cmmboy1990

鸿蒙 底部导航,中间凸起页面

cmmboy1990 发布时间:2021-07-29 14:08:15 ,浏览量:4

鸿蒙 底部导航,中间凸起页面

1.布局 activity_main.xml




    

    

        

            

            

        

        

            

            

        

        

            

            
        

    



2.图片 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 3.主页面代码

package com.example.myapplication.slice;

import com.example.myapplication.Fraction.BookFraction;
import com.example.myapplication.Fraction.CircleFraction;
import com.example.myapplication.Fraction.MainFraction;
import com.example.myapplication.Fraction.MineFraction;
import com.example.myapplication.ResourceTable;
import com.example.myapplication.bar.bottom.BottomBarInfo;
import com.example.myapplication.bar.bottom.BottomNavigationBar;
import com.example.myapplication.bar.component.BottomBarComponentProvider;
import com.example.myapplication.bar.component.FractionBarComponent;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.ability.fraction.FractionAbility;
import ohos.aafwk.ability.fraction.FractionManager;
import ohos.aafwk.content.Intent;
import ohos.agp.components.*;
import ohos.agp.utils.Color;
import ohos.global.resource.NotExistException;
import ohos.global.resource.ResourceManager;
import ohos.global.resource.WrongTypeException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainAbilitySlice2 extends AbilitySlice implements Component.ClickedListener {


    private DirectionalLayout homebtn, mybtn;
    private int defaultColor;
    private int tintColor;

    private Text text1, text2;
    private Image image1, image2;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main2);
        homebtn = (DirectionalLayout) findComponentById(ResourceTable.Id_homeLayout);
        mybtn = (DirectionalLayout) findComponentById(ResourceTable.Id_meLayout);

        text1 = (Text) findComponentById(ResourceTable.Id_text1);
        text2 = (Text) findComponentById(ResourceTable.Id_text2);

        image1 = (Image) findComponentById(ResourceTable.Id_image1);
        image2 = (Image) findComponentById(ResourceTable.Id_image2);

        homebtn.setClickedListener(this);
        mybtn.setClickedListener(this);
        defaultColor = getColor(ResourceTable.Color_colorGray);
        tintColor = getColor(ResourceTable.Color_colorBlue);


        //调用自定义的颜色文件
        ResourceManager resManager = getAbility().getResourceManager();
        try {
            defaultColor = resManager.getElement(ResourceTable.Color_color_8a).getColor();
            tintColor = resManager.getElement(ResourceTable.Color_color_ed).getColor();
        } catch (IOException | WrongTypeException | NotExistException e) {
            e.printStackTrace();
        }

        addHomeFraction();
    }


    private void addHomeFraction() {
        ((FractionAbility) getAbility()).getFractionManager()
                .startFractionScheduler()
                .add(ResourceTable.Id_mainstack, new MainFraction())
                .submit();
    }


    private void replaceHomeFraction() {
        ((FractionAbility) getAbility()).getFractionManager()
                .startFractionScheduler()
                .replace(ResourceTable.Id_mainstack, new MainFraction())
                .submit();
    }

    private void replaceMyFraction() {
        ((FractionAbility) getAbility()).getFractionManager()
                .startFractionScheduler()
                .replace(ResourceTable.Id_mainstack, new MineFraction())
                .submit();
    }

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

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


    @Override
    public void onClick(Component component) {
        switch (component.getId()) {
            case ResourceTable.Id_homeLayout:
                text1.setTextColor(new Color(tintColor));
                image1.setImageAndDecodeBounds(ResourceTable.Media_home_select);
                text2.setTextColor(new Color(defaultColor));
                image2.setImageAndDecodeBounds(ResourceTable.Media_me_unselect);
                replaceHomeFraction();
                break;
            case ResourceTable.Id_meLayout:
                text2.setTextColor(new Color(tintColor));
                image2.setImageAndDecodeBounds(ResourceTable.Media_me_select);
                text1.setTextColor(new Color(defaultColor));
                image1.setImageAndDecodeBounds(ResourceTable.Media_home_unselect);
                replaceMyFraction();
                break;
            default:
                break;

        }
    }

}

4.MineFraction.java 【类似于Android 的Fragment】 注意:主Ability 继承 FractionAbility

package com.example.myapplication.Fraction;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.fraction.Fraction;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.ComponentContainer;
import ohos.agp.components.LayoutScatter;

public class MineFraction extends Fraction {

    @Override
    protected Component onComponentAttached(LayoutScatter scatter, ComponentContainer container, Intent intent) {
        Component component = scatter.parse(ResourceTable.Layout_abllity_me, container, false);
        return component;
    }

}

5.效果图 在这里插入图片描述

关注
打赏
1688896170
查看更多评论

cmmboy1990

暂无认证

  • 4浏览

    0关注

    131博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0768s