鸿蒙 ArkTs语言开发的项目,可以用于毕业设计及大作业

1,鸿ArkTS仿网易云APP开发及设计

2,基于鸿蒙记事本设计与实现

3,基于鸿蒙仿抖音实现

4,鸿蒙ArkTs开发商城应用设计及实现

5,鸿蒙ArkTS壁纸小屋 APP 设计及开发

6,鸿蒙ArkTS记账助手 设计及实现

7,基于音乐播放器 设计及实现

8,基于鸿蒙ArkTS商城app 设计及实现

9, 基于鸿蒙小米天气app实现

10,基于鸿蒙ArkTs个人日记设计及实现

11,鸿蒙备忘录APP 

12 鸿蒙Next 音乐播放器

13,基于鸿蒙健康助手APP

14,基于鸿蒙视频播放实现

15,基于鸿蒙毕业设计项目记账APP实现

import { BreakPointConstants, BreakPointType, cart, EmitterKey, FullScreenConstants, PMNavPathStack } from 'basic'
import { CartView } from 'cart'
import { CategoryView } from 'category'
import { HomeView } from 'home'
import { MyView } from 'my'
import { emitter } from '@kit.BasicServicesKit'
import { FileStrategy, Logger } from '@nzy/logger';
interface TabItem {
  text: string
  normal: ResourceStr
  active: ResourceStr
}

@Entry
@Component
struct Index {
  // 购物车数量
  @StorageProp(cart.CartCountKey) cartCount: number = 0
  // 底部导航栏高度
  @StorageProp(FullScreenConstants.BOTTOM_HEIGHT) bottomHeight: number = 0
  @StorageProp(BreakPointConstants.BREAKPOINT_KEY) bp: string = BreakPointConstants.SM
  @State activeIndex: number = 0
  list: TabItem[] = [
    { text: '首页', normal: $r('app.media.ic_public_home_normal'), active: $r('app.media.ic_public_home_active') },
    { text: '分类', normal: $r('app.media.ic_public_pro_normal'), active: $r('app.media.ic_public_pro_active') },
    { text: '购物袋', normal: $r('app.media.ic_public_cart_normal'), active: $r('app.media.ic_public_cart_active') },
    { text: '我的', normal: $r('app.media.ic_public_my_normal'), active: $r('app.media.ic_public_my_active') },
  ]
  //页面栈
  @Provide pageStack: NavPathStack = PMNavPathStack
  tabsController: TabsController = new TabsController()

  aboutToAppear(): void {
    let parentPath = getContext(this).getApplicationContext().filesDir
    // Main window is created, set main page for this ability
    Logger.init({
      domain: 0x0000, // domain
      isEnable: true, // 是否打印,默认是 true,是否打印,不影响写文件
      isShowFile: true, // 是否显示打印日志文件的位置 默认 true
      tag: 'MyTag', // 全局TAG 默认是 Logger
      jsonWrite: true, // 是否写入文件 默认是 true
      debugLevelWrite: true, // debug级别的是否写入文件 默认是 true
      parentPath: parentPath // 写入文件的 parent 路径
    }
      ,
      new FileStrategy(`${Date.now()}.txt`)// 要写入文件策略模式,自己也可以去实现
    )
    // 更新购物车数量实现初始化
    cart.updateCartCount()
    // 监听切换索引事件,触发时切换到指定索引,如果没有传入,则直接跳转到第一个索引
    emitter.on(EmitterKey.CHANGE_TAB, (eventData: emitter.EventData) => {
      this.activeIndex = eventData.data?.index || 0
      this.tabsController.changeIndex(this.activeIndex)
    })
  }

  build() {
    Navigation(this.pageStack) {
      Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {
        ForEach(this.list, (item: TabItem, index: number) => {
          TabContent() {
            if (index === 0) {
              HomeView()
            } else if (index === 1) {
              CategoryView()
            } else if (index === 2) {
              CartView()
            } else {
              MyView()
              // Button().onClick(()=>{
              //   this.pageStack.pushPath({name:'SearchView',param:new Object({id:'111'})})
              // })
            }
          }
          .tabBar(this.TabItemBuilder(item, index))
        })
      }
      .scrollable(false)
      .barPosition(new BreakPointType({
        sm: BarPosition.End,
        md: BarPosition.End,
        lg: BarPosition.Start
      }).getValue(this.bp))
      .vertical(this.bp == BreakPointConstants.LG ? true : false)
      .onTabBarClick(index => {
        this.activeIndex = index
      })
      .padding({ bottom: this.bottomHeight })
    }
    .hideTitleBar(true) // 隐藏标题栏
    .mode(NavigationMode.Stack) // 单栏模式
  }

  @Builder
  TabItemBuilder(item: TabItem, index: number) {
   Badge({
     count:index==2?this.cartCount:0,
     style:{}
   }){
     Column() {
       Image(this.activeIndex === index ? item.active : item.normal)
         .width(24)
         .aspectRatio(1)
       Text(item.text)// 跨 HSP 访问资源,需要在 oh-package.json5中导入
         .fontColor($r('[basic].color.black'))
         .fontSize(12)
     }
     .justifyContent(FlexAlign.SpaceEvenly)
     .height(50)
   }
  }
}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐