【HarmonyOS NEXT星河版开发学习】界面开发实战b-支付宝界面

news2024/11/16 4:22:34

个人主页→VON

收录专栏→鸿蒙开发小型案例总结​​​​​

基础语法部分会发布于github 和 gitee上面(暂未发布)

难度系数:

目录

前言

知识点概述

Scroll组件

基本用法

注意事项

层叠布局

层叠布局的特性

层叠布局的应用场景

Stack组件

Stack组件的接口和参数

Stack组件的使用方法

层叠布局的优势

界面效果展示

代码展示 


整体效果展示

支付宝

前言

这次的实战案例难度较大知识点概述的十分的全面,其中还包括了一些新的知识点比如(主体页面内容的滚动-Scroll组件),案例中所用的图标来自于阿里云的图标库。代码量也是达到了300行,所用组件众多,大都是嵌套应用。

阿里云图标库

知识点概述

Scroll组件

croll组件是鸿蒙开发中的一种可滚动的容器组件,用于处理内容显示超出屏幕或指定区域的情况

鸿蒙(HarmonyOS)是一个多智能终端的操作系统,由华为开发。作为鸿蒙开发的一部分,Scroll组件在用户界面构建中扮演了关键角色,特别是在应用程序需要展示过多信息而无法在一屏内完全显示时。Scroll组件通过允许内容滚动,增强了应用的用户体验和界面的动态交互能力。

基本用法

在 HarmonyOS 的 XML 布局文件中,您可以使用 <Scroll> 标签来定义一个可滚动的区域。

通常情况下,会在 <Scroll> 内部放置一个 <Column><Row> 组件,这样可以更方便地组织内部的内容。 

注意事项

  • 性能优化:如果在 <Scroll> 内部放置了大量组件,可能会导致性能问题。在这种情况下,考虑使用虚拟列表(如 List 组件),它可以只渲染当前可见的部分,从而提高性能。

  • 边界处理:默认情况下,当滚动到底部时,滚动条会停止。如果需要实现类似于无限滚动的效果,您可能需要结合其他逻辑来动态加载数据。

  • 事件监听:还可以通过绑定事件监听器来响应滚动事件,例如当用户滚动到列表底部时触发新的数据加载。

层叠布局

层叠布局是鸿蒙开发中用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局方式

鸿蒙(HarmonyOS)是一个面向多智能终端的操作系统,由华为开发。在鸿蒙应用开发过程中,层叠布局是一种重要的用户界面布局方式,它通过Stack容器组件实现位置的固定定位与层叠,使得容器中的子元素依次入栈,后一个子元素覆盖前一个子元素。这种布局方式不仅增强了页面的视觉效果,还能实现更加复杂的交互设计。以下将具体分析层叠布局的具体特性和应用场景:

层叠布局的特性

  • 元素重叠能力:层叠布局允许其中的子元素进行重叠排列,这意味着后渲染的子元素可以覆盖先渲染的子元素。
  • 位置定位能力:通过Stack容器组件,可以实现元素的固定定位,这使得开发者能够精确控制每个元素的位置。
  • 对齐方式:Stack组件提供了九种对齐方式,可以通过alignContent参数设置子组件在容器内的对齐方式,默认为居中对齐。
  • zIndex层级控制:子元素可以通过zIndex属性控制其在视觉上的层级,zIndex值越大,元素越在上层显示。

层叠布局的应用场景

  • 广告展示:层叠布局适合用于需要重叠效果的广告展示场景,例如悬浮广告和层叠通知。
  • 卡片层叠效果:在需要实现卡片或者图层依次层叠的效果时,层叠布局提供了简单高效的实现方式。
  • 复杂交互界面:对于一些复杂的交互界面,例如控制面板、多功能窗口等,层叠布局能够提供灵活的布局方案。

Stack组件

Stack组件的接口和参数

  • alignContent参数:该参数决定了Stack内子元素的对齐方式,支持九种对齐方式,包括顶部左对齐、顶部居中对齐、顶部右对齐、中部左对齐、中间居中对齐、底部左对齐等。
  • zIndex属性:通过设置zIndex可以控制子元素的显示层级,适用于需要控制元素覆盖顺序的场景。

Stack组件的使用方法

  • 基本使用:Stack组件作为容器,其内部的子元素可以依次叠加,也可以单独设置每个子元素的位置和样式。
  • 对齐方式设置:通过alignContent参数,可以设置Stack内子元素的对齐方式,以实现不同的布局效果。
  • 层级控制:利用zIndex属性,可以灵活控制子元素的层级关系,解决重叠元素的显示问题。

层叠布局的优势

  • 灵活性:层叠布局提供了一种灵活的布局方式,适用于多种复杂的UI设计需求。
  • 视觉效果:通过元素重叠和层级控制,可以创造出丰富的视觉效果和深度感。
  • 空间利用率:层叠布局可以在有限的屏幕空间内有效利用三维空间,展示更多信息。

界面效果展示

代码展示 

@Entry
@Component
struct Index {
  build() {
    // 1.整体Stack布局+底部的tab
    // 2.主体区域的架子:头部+主题页面(主题页面可滚动)
    Stack({alignContent:Alignment.Bottom}){
      // 1.1主题展示区
      Stack({alignContent:Alignment.Top}){
        // 头部
        Row(){
          // 左边
          Row(){
            Text('开封').fontColor('#fff')
            Image($r('app.media.zfb_public_arrow_down_0'))
              .width(20)
              .fillColor('#fff')
          }
          // 中间
          Row(){
            Image($r('app.media.zfb_public_search'))
              .width(20)
              .fillColor('#666')
              .margin({left:5,right:5})
            Text('证件中心,查看电子...')
              .layoutWeight(1)
              .textOverflow({
                overflow:TextOverflow.Ellipsis// 设置文字溢出效果
              })
                // 必须配合maxLines才有效果
              .maxLines(1)// 设置显示的行数
            Text('搜索')
              .width(55)
              .fontColor('#5b73de')
              .fontWeight(700)
              .textAlign(TextAlign.Center)
              .border({
                width:{left:1},
                color:'#ccc'
              })
          }
          .height(32)
          .layoutWeight(1)
          .backgroundColor('#fff')
          .borderRadius(5)
          .margin({left:12,right:12})
          // 右边
          Image($r('app.media.zfb_public_add_norm'))
            .width(30)
            .fillColor('#fff')
        }
        .padding({left:10,right:10})
        .width('100%')
        .height(60)
        .backgroundColor('#5b73de')
        .zIndex(10)// 头部层级最高

        // 主体页面
        // Column / Row不具备滚动效果
        Scroll(){
          Column(){
            // top快捷按钮区域
            Row(){
              // 扫一扫
              Column(){
                Image($r('app.media.zfb_public_scan'))
                  .width(36)
                  .fillColor('#fff')
                Text('扫一扫')
                  .fontColor('#fff')
              }
              .layoutWeight(1)
              // 设置
              Column(){
                Image($r('app.media.zfb_public_settings'))
                  .width(36)
                  .fillColor('#fff')
                Text('设置')
                  .fontColor('#fff')
              }
              .layoutWeight(1)
              // 导航
              Column(){
                Image($r('app.media.zfb_public_navigation'))
                  .width(36)
                  .fillColor('#fff')
                Text('导航')
                  .fontColor('#fff')
              }
              .layoutWeight(1)
              // 卡包
              Column(){
                Image($r('app.media.zfb_desktop_servicewidgets'))
                  .width(36)
                  .fillColor('#fff')
                Text('卡包')
                  .fontColor('#fff')
              }
              .layoutWeight(1)
            }
            .backgroundColor('#5b73de')
            .padding({top:5,bottom:15})

            // 主体区域
            Column(){
              // 导航区
              Column({space:10}){
                Row(){
                  Column(){
                    Image($r('app.media.zfb_01'))
                      .width(28).margin({bottom:8})
                    Text('市民中心')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_02'))
                      .width(28).margin({bottom:8})
                    Text('手机充值')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_03'))
                      .width(28).margin({bottom:8})
                    Text('滴滴出行')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_04'))
                      .width(28).margin({bottom:8})
                    Text('火车票机票')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_05'))
                      .width(28).margin({bottom:8})
                    Text('生活缴费')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                }
                Row(){
                  Column(){
                    Image($r('app.media.zfb_06'))
                      .width(28).margin({bottom:8})
                    Text('芭芭农场')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_07'))
                      .width(28).margin({bottom:8})
                    Text('花呗')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_08'))
                      .width(28).margin({bottom:8})
                    Text('蚂蚁保')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_09'))
                      .width(28).margin({bottom:8})
                    Text('蚂蚁森林')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_10'))
                      .width(28).margin({bottom:8})
                    Text('饿了么')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                }
                Row(){
                  Column(){
                    Image($r('app.media.zfb_11'))
                      .width(28).margin({bottom:8})
                    Text('转账')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_12'))
                      .width(28).margin({bottom:8})
                    Text('余额宝')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_13'))
                      .width(28).margin({bottom:8})
                    Text('信用卡还款')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_14'))
                      .width(28).margin({bottom:8})
                    Text('芝麻信用')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                  Column(){
                    Image($r('app.media.zfb_15'))
                      .width(28).margin({bottom:8})
                    Text('更多')
                      .fontSize(12).fontColor('#666')
                  }
                  .layoutWeight(1)
                }
              }
              .padding(10)

              // 产品区
              Column(){
                Image($r('app.media.zfb_pro01'))
                  .width('100%')
                Image($r('app.media.zfb_pro02'))
                  .width('100%')
                Image($r('app.media.zfb_pro03'))
                  .width('100%')
                Image($r('app.media.zfb_pro04'))
                  .width('100%')
                Image($r('app.media.zfb_pro05'))
                  .width('100%')
                Image($r('app.media.zfb_pro06'))
                  .width('100%')
                Image($r('app.media.zfb_pro07'))
                  .width('100%')
              }

            }
            .width('100%')
            .backgroundColor('#f6f6f6')
            .borderRadius({
              topLeft:20,
              topRight:20
            })
          }

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

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

      // 1.2底部tab导航区
      Row(){
        // 支付宝logo
        Column(){
          Image($r('app.media.zfb_logo'))
            .width(35)
        }
        .layoutWeight(1)
        // 回家
        Column(){
          Image($r('app.media.zfb_public_home'))
            .width(28).margin({bottom:2})
          Text('回家')
            .fontSize(12)
        }
        .layoutWeight(1)
        // 视频
        Column(){
          Image($r('app.media.zfb_gallery_album_damage_video'))
            .width(28).margin({bottom:2})
          Text('视频')
            .fontSize(12)
        }
        .layoutWeight(1)
        // 消息
        Column(){
          Image($r('app.media.zfb_public_comments'))
            .width(28).margin({bottom:2})
          Text('消息')
            .fontSize(12)
        }
        .layoutWeight(1)
        // 我的
        Column(){
          Image($r('app.media.zfb_public_contacts'))
            .width(28).margin({bottom:2})
          Text('我的')
            .fontSize(12)
        }
        .layoutWeight(1)
      }
      .width('100%')
      .height(60)
      .backgroundColor('#fbfcfe')
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#5b73de')
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows10搭建maxkb开发环境(劝退指南)

windows搭建maxkb开发环境踩坑记录&#xff0c;先说结论吧&#xff0c;windows上面搞不下去了&#xff0c;直接在ubuntu等linux环境搭建吧&#xff0c;别浪费时间了。 1.maxKB开发环境搭建 官方文档&#xff1a;https://maxkb.cn/docs/dev_manual/dev_environment/ 2.各种坑 …

C++知识点总结:5.多态和虚函数(自用)

多态和虚函数 1. 多态和虚函数2. 引用形式的多态3. 虚函数注意事项4. 构成多态的条件5. 为什么构造函数不能是虚函数6. 虚析构函数的必要性7. 纯虚函数8. 抽象类9. 虚函数表10. typeid运算符&#xff1a;获取类型信息11. RTTI机制&#xff08;C运行时类型识别机制&#xff09;1…

加速开发利器:代码生成器如何快速生成后端接口?

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 前言 在现代软件开发中&#xff0c;重复性的增删改查逻辑代码的编写往往非常耗时且容易出错。为了提高开发效率&#xff0c;减少手动维护的成本&#xff0c;代码生成器就成为了一个非常…

MySQL常用的日期和时间函数

文章目录 概述日期和时间函数 概述 在 MySQL 中&#xff0c;有许多常用的日期和时间函数&#xff0c;可以帮助你处理和操作日期和时间字段。 日期和时间函数 获取当前日期和时间 NOW(): 返回当前的日期和时间。CURRENT_DATE() 或 CURDATE(): 返回当前的日期&#xff08;不包括…

3C产品手册制作7步骤:让消费者快速了解产品

引言 在这个信息爆炸的时代&#xff0c;如何让消费者在众多3C产品&#xff08;计算机、通讯、消费电子&#xff09;中快速了解并选择您的产品&#xff1f;一份精心制作的产品手册无疑是关键。它不仅是产品的“名片”&#xff0c;更是连接品牌与消费者的桥梁。接下来&#xff0…

2024年湖北省建筑施工特种作业人员证书延期申请/年审

2024年湖北省建筑施工特种作业人员证书延期申请/年审 建筑电工、建筑架子工、建筑起重机械司机、信号工、施工升降机等延期&#xff0c;要注意提前3个月内进行延期&#xff0c;2年1延期。 湖北特种作业考核管理系统跳转至延期申请申报页面&#xff0c;再点击“新增”按钮&…

Games101--shading 3

1.重心坐标 为什么要进行插值&#xff1f;&#xff08;因为有很多的计算实在三角形内部进行的&#xff0c;而我们需要形成一个平滑的过渡&#xff09; 插值需要插值什么内容&#xff1f;&#xff08;颜色&#xff0c;纹理映射&#xff0c;法线插值&#xff0c;可以对三角形的…

计算机毕业设计选题推荐-C语言学习辅导网站-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

springboot工程,无法访问index.html主页

1、问题概述&#xff1f; 我们使用springboot开发了工程后&#xff0c;会将项目打包成jar包或者war包放到服务器端进行发布&#xff0c;但是在打包后&#xff0c;时长会出现index.html主页无法访问的情况。 先分析几种常见的主页无法访问的解决方案&#xff0c;助你解决问题&…

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5 通过token校验用户&#xff08;重要&#xff09; 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上篇…

职业本科大数据实训室

一、职业本科大数据实训室建设背景 在数字化浪潮汹涌澎湃的今天&#xff0c;大数据已跃升为引领社会进步和经济发展的新引擎。随着《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》的深入实施&#xff0c;数字化转型作为国家战略的重要组成部分&…

微信小程序登录获取 session_key 和 openid

一、申请测试小程序&#xff0c;只要微信扫码授权就可以申请了。 二、调用接口获取登录凭证&#xff08;code&#xff09;。通过凭证进而换取用户登录态信息&#xff0c;包括用户在当前小程序的唯一标识&#xff08;openid&#xff09;、微信开放平台账号下的唯一标识&#xf…

黔东南苗族文化展示小程序的设计与实现-计算机毕业设计源码85589

摘要 黔东南苗族文化作为中国传统文化的重要组成部分之一&#xff0c;具有悠久的历史和丰富的民俗传统。然而&#xff0c;随着社会的发展和现代化进程&#xff0c;苗族文化面临着传承和保护的挑战。为了更好地传播和展示黔东南苗族文化&#xff0c;本研究设计并实现了一款专注…

leetcode-119-杨辉三角II

原理&#xff1a; 1、初始化每行一维数组nums[1]&#xff1b; 2、从第2行开始&#xff0c;在nums的头插入0&#xff08;因为杨辉三角每行的第一个1相当于是上一行的1与其前面的0相加之和&#xff09;后进行相加操作。 代码&#xff1a;

MySQL——数据库的操作,数据类型,表的操作

MySQL——数据库的操作&#xff0c;数据类型&#xff0c;表的操作 1. 数据库的操作1.1 显示当前数据库1.2 创建数据库舍弃当前所写的SQL语句查看当前数据库服务全局的默认字符集 1.3 使用数据库1.4 查看当前操作的数据库查看MySQL的帮助 1.5 删除数据库 2. 常见数据类型2.1 数值…

Java生成Word->PDF->图片

文章目录 引言I Java生成Word、PDF、图片文档获取标签渲染数据生成文档案例II 工具类封装2.1 word 渲染和word 转 pfd2.2 pdf转成一张图片III poi-tl(word模板渲染) 标签简介文本标签{{var}}图片标签表格标签IV poi-tl提供了类 Configure 来配置常用的设置标签类型前后缀see al…

【Vue3】图片未加载成功前占位

背景 在写项目时&#xff0c;加载图片未成功前&#xff0c;会出现空白页面&#xff0c;太影响美观和体验感 解决方案 1. element ui通过slot占位符解决 2. 自定义指令 原生img标签可以通过自定义指令解决&#xff0c;img标签有onload和onerror事件&#xff0c;都是在渲染成…

svg封装使用

1、安装库 "vite-plugin-svg-icons": "^2.0.1" 2、配置svg vite.config中配置&#xff1a; 主要是配置createSvgIconsPlugin import react from vitejs/plugin-react import viteESLintPlugin from vite-plugin-eslint import { loadEnv } from vite im…

VLSI | 计算CMOS反相器的负载电容在BSIM4中的相关参数

ref. SPICE Model Parameters for BSIM4.5.0 (ubc.ca)PTM (umn.edu) 来自UMN的Microelectronics Co-design Research Group给出了晶体管PTM模型可以在SPICE仿真中使用&#xff1a;PTM (umn.edu)&#xff0c;但是由于使用Google才能下载&#xff0c;因此搬运到了这里&#xff…

电机制造业MES系统:直面行业痛点,引领智能化发展趋势

在电机制造业中&#xff0c;MES的应用具有重要意义。由于该行业的产品种类繁多&#xff0c;生产工艺复杂多变&#xff0c;生产现场的信息化管理难度较大。而通过引入MES&#xff0c;企业可以实现对生产现场的实时监控、生产进度的准确把握以及产品质量的有效控制。 电机行业信息…