鸿蒙小案例---支付宝首页(Scroll容器)

该文章已生成可运行项目,

效果演示

代码实现

import { window } from '@kit.ArkUI'

interface NavInterface {
  navImg: ResourceStr,
  navTitle: string
}

@Entry
@Component
struct Index {
  @State nav_list: NavInterface[] = [
    {
      navImg: $r('app.media.zfb_nav1'),
      navTitle: '滴滴出行'
    },
    {
      navImg: $r('app.media.zfb_nav2'),
      navTitle: '生活缴费'
    },
    {
      navImg: $r('app.media.zfb_nav3'),
      navTitle: '股票'
    },
    {
      navImg: $r('app.media.zfb_nav4'),
      navTitle: '蚂蚁森林'
    },
    {
      navImg: $r('app.media.zfb_nav5'),
      navTitle: '手机充值'
    },
    {
      navImg: $r('app.media.zfb_nav6'),
      navTitle: '余额宝'
    },
    {
      navImg: $r('app.media.zfb_nav7'),
      navTitle: '花呗'
    },
    {
      navImg: $r('app.media.zfb_nav8'),
      navTitle: '飞猪旅行'
    },
    {
      navImg: $r('app.media.zfb_nav9'),
      navTitle: '淘票票'
    },
    {
      navImg: $r('app.media.zfb_nav10'),
      navTitle: '饿了吗'
    },
    {
      navImg: $r('app.media.zfb_nav11'),
      navTitle: '读书听书'
    },
    {
      navImg: $r('app.media.zfb_nav12'),
      navTitle: '基金'
    },
    {
      navImg: $r('app.media.zfb_nav13'),
      navTitle: '直播广场'
    },
    {
      navImg: $r('app.media.zfb_nav14'),
      navTitle: '医疗健康'
    },
    {
      navImg: $r('app.media.zfb_nav15_more'),
      navTitle: '更多'
    },
  ]

  async aboutToAppear() {
    let w = await window.getLastWindow(getContext())
    w.setWindowSystemBarProperties({
      statusBarColor: '#000',
      statusBarContentColor: '#000'
    })
  }

  build() {
    // 思路:
    // 1、整体的Stack布局 + 底部的Tab导航栏
    // 2、主题区域的架子: 头部 + 主题页面 (层叠关系,主题页面可滚动)
    Stack({ alignContent: Alignment.Bottom }) {
      //   主体展示区
      Stack({ alignContent: Alignment.Top }) {
        //   头部
        Row() {
          // 左边
          Column() {
            /*
            Row() {
              Text('北京')
                .fontColor('#fff')
                .fontSize(18)
              Image($r('app.media.zfb_head_down'))
                .fillColor('#fff')
                .width(10)
            }
            .margin({ right: 12 })

            Text('晴 2℃')
              .fontColor('#fff')
              .fontSize(12)
             */

            Text('北京')
              .fontColor('#fff')
              .fontSize(18)
            Text('晴 2℃')
              .fontColor('#fff')
              .fontSize(12)
            Image($r('app.media.zfb_head_down'))
              .fillColor('#fff')
              .width(12)
              .position({
                x: 40,
                y: 0
              })
          }

          // .alignItems(HorizontalAlign.Start)
          // .margin({right: 12})

          // 中间
          Row() {
            Image($r('app.media.zfb_head_search'))// .fillColor('#fff')
              .width(20)
              .fillColor('#666')
              .margin({ left: 5 })

            Text('北京交通一卡通')
              .layoutWeight(1)
              .margin({ left: 8 })

            Text('搜索')
              .fontColor('#5b73de')
              .fontWeight(700)
              .width(55)// .backgroundColor(Color.Pink)
              .textAlign(TextAlign.Center)
              .border({
                width: { left: 1 },
                color: '#ccc'
              })
          }
          // .justifyContent(FlexAlign.SpaceBetween)
          .layoutWeight(1)
          .height(32)
          .backgroundColor('#fff')
          .borderRadius(5)
          .margin({ left: 25, right: 12 })

          // 右边
          Image($r('app.media.zfb_head_plus'))
            .fillColor('#fff')
            .width(30)
        }
        .width('100%')
        .height(60)
        .backgroundColor('#5b73de')
        .zIndex(1)
        .padding({ left: 10, right: 10 })

        //   主体页面
        Scroll() {
          Column() {
            // 顶部快捷按钮
            Row() {
              Column() {
                Image($r('app.media.zfb_top_scan'))
                  .width(36)
                  .fillColor('#fff')
                Text('扫一扫')
                  .fontColor('#fff')
              }

              Column() {
                Image($r('app.media.zfb_top_pay'))
                  .width(36)
                  .fillColor('#fff')
                Text('首付款')
                  .fontColor('#fff')
              }

              Column() {
                Image($r('app.media.zfb_top_travel'))
                  .width(36)
                  .fillColor('#fff')
                Text('出行')
                  .fontColor('#fff')
              }

              Column() {
                Image($r('app.media.zfb_top_card'))
                  .width(36)
                  .fillColor('#fff')
                Text('卡包')
                  .fontColor('#fff')
              }

              // .justifyContent(FlexAlign.Center)
            }
            .padding({ top: 5, bottom: 15 })
            .backgroundColor('#5b73de')
            .width('100%')
            .justifyContent(FlexAlign.SpaceAround)

            // 主题内容区
            Column() {
              // 导航区
              Grid() {
                ForEach(this.nav_list, (item: NavInterface) => {
                  GridItem() {
                    Column({ space: 8 }) {
                      Image(item.navImg)
                        .width(28)
                      Text(item.navTitle)
                        .fontSize(12)
                        .fontColor('#666')
                    }
                  }
                })
              }
              .rowsTemplate('1fr 1fr 1fr')
              .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
              .height(200)

              // 产品区
              Row({ space: 5 }) {
                Image($r('app.media.zfb_pro_pic1'))
                  .layoutWeight(1)
                Image($r('app.media.zfb_pro_pic2'))
                  .layoutWeight(1)
                Image($r('app.media.zfb_pro_pic3'))
                  .layoutWeight(1)
              }
              .width('100%')
              .padding(10)

              // 市民中心
              Column({ space: 10 }) {
                Image($r('app.media.zfb_pro_list1'))
                  .width('100%')
                Image($r('app.media.zfb_pro_list2'))
                  .width('100%')
              }
              .padding(10)
            }
            .width('100%')
            .backgroundColor('#f6f6f6')
            .borderRadius({
              topLeft: 20,
              topRight: 20
            })
            .height(1000)

          }
          .width('100%')
          .padding({ top: 60, bottom: 60 })
        }

      }
      .width('100%')
      .height('100%')

      //   底部Tab导航区
      Row() {
        Column() {
          Image($r('app.media.zfb_tab_home'))
            .width(35)
        }

        Column() {
          Image($r('app.media.zfb_tab_money'))
            .width(28)
            .margin({ bottom: 2 })
          Text('理财')
          // .fontSize(28)
        }


        Column() {
          Image($r('app.media.zfb_tab_life'))
            .width(28)
            .margin({ bottom: 2 })
          Text('生活')
          // .fontSize(28)
        }

        Column() {
          Image($r('app.media.zfb_tab_chat'))
            .width(28)
            .margin({ bottom: 2 })
          Text('消息')
          // .fontSize(28)
        }

        Column() {
          Image($r('app.media.zfb_tab_me'))
            .width(28)
            .margin({ bottom: 2 })
          Text('我的')
          // .fontSize(28)
        }

      }
      .height(60)
      .width('100%')
      .backgroundColor('#fbfcfe')
      .justifyContent(FlexAlign.SpaceAround)

    }
    .width('100%')
    .height('100%')
    .backgroundColor('#5b73de')

    // .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
  }
}

本文章已经生成可运行项目
接口名称:支付宝手机网站支付接口(alipay.wap.create.direct.pay.by.user)     代码版本:3.3 开发语言:ASP 版 权:支付宝()网络技术有限公司   制 作 者:支付宝技术部技术支持组 联系方式:https://support.open.alipay.com/alipay/support/index.htm 免责声明:DEMO仅供参考,实际开发中需要结合具体场景修改使用。 ───────────────────────────────── ─────── 代码文件结构 ─────── alipay.wap.create.direct.pay.by.user-CSHARP-UTF-8 │ ├class┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹 │ │ │ ├alipay_core.asp┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口公用函数文件 │ │ │ ├alipay_md5.asp ┈┈┈┈┈┈┈┈┈┈┈┈MD5签名函数文件 │ │ │ ├alipay_notify.asp┈┈┈┈┈┈┈┈┈┈┈支付宝通知处理类文件 │ │ │ ├alipay_submit.asp┈┈┈┈┈┈┈┈┈┈┈支付宝各接口请求提交类文件 │ │ │ └alipay_config.asp┈┈┈┈┈┈┈┈┈┈┈基础配置文件 │ ├log┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件夹 │ ├alipayapi.asp┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口入口文件 │ ├index.asp┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝调试入口页面 │ ├notify_url.asp ┈┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件 │ ├return_url.asp ┈┈┈┈┈┈┈┈┈┈┈┈┈┈页面跳转同步通知文件 │ └readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用说明文本 ※注意※ 需要配置的文件是: alipay_config.asp alipayapi.asp notify_url.asp return_url.asp ───────── 类文件函数结构 ───────── alipay_core.asp Function CreateLinkstring(sPara) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 输入:Array sPara 需要拼接的数组 输出:String 拼接完成以后的字符串 Function CreateLinkstringUrlEncode(sPara) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并且对其做URLENCODE编码 输入:Array sPara 需要拼接的数组 输出:String 拼接完成以后的字符串 Function FilterPara(sPara) 功能:除去数组中的空值和签名参数 输入:Array sPara 签名参数组 输出:Array 去掉空值与签名参数后的新签名参数组 Function SortPara(sPara) 功能:对数组排序 输入:Array sPara 排序前的数组 输出:Array 排序后的数组 Function Md5Sign(prestr, key, input_charset) 功能:MD5签名 输入:String prestr 需要签名的字符串 String key 私钥 String input_charset 编码格式 输出:String 签名结果 Function Md5Verify(prestr, sign, key, input_charset) 功能:MD5签名 输入:String prestr 需要签名的字符串 String sign 签名结果 String key 私钥 String input_charset 编码格式 输出:String 签名结果 Function LogResult(sWord) 功能:写日志,方便测试(看网站需求,也可以改成存入数据库) 输入:String sWord 要写入日志里的文本内容 Function GetDateTimeFormat() 功能:获取当前时间 格式:年[4位]-月[2位]-日[2位] 小时[2位 24小时制]:分[2位]:秒[2位],如:2007-10-01 13:13:1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白羊@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值