【HarmonyOS App】从0到1开发购物应用App(2):开发首页

预览

在这里插入图片描述

相关组件

  • Search:搜索框组件,适用于浏览器的搜索内容输入框等应用场景。
  • Swiper:滑块视图容器,提供子组件滑动轮播显示的能力。
  • Grid:网格容器,由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。
    • Marquee:跑马灯组件,用于滚动展示一段单行文本,仅当文本内容宽度超过跑马灯组件宽度时滚动。

完整代码

import GoodsList from "../../components/goodsList"
import publicApi from "../../api/index"
import router from '@ohos.router'

@Entry
@Component
export default struct Home {
  scroller: Scroller = new Scroller()
  private swiperController: SwiperController = new SwiperController()
  textTimerController: TextTimerController = new TextTimerController()
  @State swiperList: any = [
    'https://img1.baidu.com/it/u=3953008485,1470810916&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703869200&t=efa4eb75858aa35be29a825dbc782556',
    'https://img2.baidu.com/it/u=89428783,598609419&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703869200&t=9384207a9803da3c177fe07614cf3d8c',
    'https://img2.baidu.com/it/u=1842450460,1583105677&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=208',
  ]
  @State tabsList: object[] = [
    { name: '砍价活动', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/2022062414322367e6a5479.png' },
    { name: '拼团活动', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/20220624143223798a31616.png' },
    { name: '限时秒杀', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/202206241432233bf9e9321.png' },
    { name: '热销榜单', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/20220624143223839e33279.png' },
    { name: '领券中心', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/20220624143223f68476108.png' },
    { name: '积分签到', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/202206241432238059f4396.png' },
    { name: '积分抽奖', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/2022062414322330e7b4149.png' },
    { name: '商城资讯', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/20220624143622847ab7155.png' },
    { name: '开源', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/20220624144414783817921.png' },
    { name: '帮助中心', url: '', icon: 'https://php-b2c.likeshop.cn/uploads/images/202206241435258effe0820.png' },
  ]
  
  // 页面初始化
  aboutToAppear(){
    console.log('aboutToAppear============')
    /*限时秒杀 倒计时开始*/
    // this.textTimerController.start()
  }

  // 页面切到前台显示
  onPageShow() {
    console.log('onPageShow==========')
  }
  // 页面切到后台显示
  onPageHide(){
    console.log('onPageHide==========')
  }

  build() {
    Scroll(this.scroller) {
      /*顶部*/
      Column() {
        /*搜索框*/
        Row(){
          Image($r('app.media.ic_public_search')).width(20).height(20)
          Text('请输入搜索关键字').fontColor($r('app.color.color_info')).fontSize(14)
        }.backgroundColor('#ffffff').borderRadius(30).width('100%').height(40).padding({left: 10})
        .onClick(()=>{
          router.pushUrl({
            url: 'pages/home/search'
          })
        })

        /*轮播图*/
        Swiper(this.swiperController) {
          ForEach(this.swiperList, (item: string) => {
            Image(item)
              .alt($r('app.media.img_alt'))
              .height(150)
              .borderRadius(10)
          }, item => item)
        }
        .indicatorStyle({ color: '#f3f4f6', selectedColor: '#ffffff' })
        .margin({ top: 10 })
        .autoPlay(true)
        .interval(4000)
        .indicator(true)
        .loop(true)
        .duration(1000)
        .itemSpace(0)
        .curve(Curve.Linear)
        .onChange((index: number) => {
          console.info(index.toString())
        })

        /*金刚区*/
        Grid() {
          ForEach(this.tabsList, (item: any) => {
            GridItem() {
              Column() {
                Image(item.icon)
                  .width(30)
                  .height(30)
                Text(item.name)
                  .margin({ top: 10 })
                  .fontSize(12)
              }
            }
          }, item => item.name)
        }
        .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
        .rowsTemplate('1fr 1fr')
        .backgroundColor('#fff')
        .height(160)
        .borderRadius(10)
        .margin({ top: 10 })
        .padding(10)

        /*商城资讯*/
        Row() {
          Image($r('app.media.icon_toutiao'))
            .width(60)
          Divider().vertical(true).margin({ left: 10, right: 10 }).height(15)
          /*资讯标题  跑马灯*/
          Marquee({
            start: true,
            step: 20,
            loop: Infinity,
            fromStart: true,
            src: '双12活动预告双12活动预告双12活动预告'
          })
            .width('70%')
            .fontSize(14)
        }
        .backgroundColor('#fff')
        .borderRadius(10)
        .padding(15)
        .width('100%')
        .margin({ top: 10 })

        /*banner图*/
        Image($r('app.media.banner'))
          // .alt($r('app.media.img_alt'))
          .margin({ top: 10 })
          .width('100%')
          .borderRadius(5)
        .onClick(()=>{
          router.pushUrl({
            url: `pages/home/goods_info`,
            params: {
              id: 123
            }
          })
        })

        Row(){
          Text('热门推荐').fontColor($r('app.color.color_primary'))
          Text('限时优惠').fontSize(14).margin({left: 10})
        }.margin({top: 20})

        /*推荐商品列表*/
        GoodsList({
          // list: this.goods
        }).margin({top: 10})
      }
      .padding(10)
      .backgroundImage('https://php-b2c.likeshop.cn/uploads/images/202106011057029f7988147.jpg')
      .backgroundImageSize({ width: '100%' })
    }
    .backgroundColor('#f8f8f8')
    .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
    .scrollBar(BarState.Off) // 滚动条隐藏
    .edgeEffect(EdgeEffect.None)
    // .border({ width: 5, color: 0x317AF7, radius: 10, style: BorderStyle.Dotted })
  }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值