鸿蒙Next开发实战教程--银行App
昨天Mate70的官方预热直接引起网络爆炸,现在预约人数已经两百多万了,大家都这么有米吗
今天跟大家分享一个银行app实战教程。

页面虽然看起来比较复杂,但是仔细分析一下并不难,下面跟大家分享一下本项目的一些难点。
首先是首页的导航栏,这个导航栏看起来没什么特别,不过它是一个可以变化的导航栏,在页面滑动的过程中,导航栏的背景色会从透明变为白色。
系统的导航栏无法满足需求,所以我们需要自定义一个导航栏。
这个导航栏的内容部分比较简单,中间标题加两侧按钮,布局为SpaceBetween,相关代码如下:
Row(){
Image($r('app.media.scan'))
.width(22)
.height(22)
Text('我的资产')
.width(120)
.textAlign(TextAlign.Center)
.fontColor('#1a1a1a')
.fontSize(16)
.fontWeight(FontWeight.Bold)
Image($r('app.media.ss'))
.width(22)
.height(22)
.onClick(()=>{
router.pushUrl({
url:'pages/Found'
})
}
)}
.width('100%')
.justifyContent(FlexAlign.SpaceBetween)
.padding({left:12,right:12,top:px2vp(this.topRectHeight) + 12,bottom:12})
.backgroundColor('rgba(255,255,255,'+this.titleAlpha+')')
接下来我们要处理它的颜色变化。我们想要页面向上滑动到第二个单元的时候导航栏变为白色背景,在页面向下滑动到头的时候导航栏变为透明背景,这里可以使用list组件的onScrollIndex方法来实现,相关代码如下:
.onScrollIndex((start,end)=>{
if(start == 0 && end == 4){
if(this.havaStarted){
this.titleAlpha = '1'
}
}
if(start == 0 && end == 3){
if(this.havaStarted){
this.titleAlpha = '0'
}
}
})
首页里除导航栏以外的部分都比较简单,主要就是一个List组件,把每个部分拆分出来以后就是简单的横向或者纵向布局,以头部总资产部分为例,就是一个比较简单的横向布局,相关代码如下:
Stack({alignContent:Alignment.Center}){ Image($r('app.media.nav_img')) .width('100%') Row(){ Column({space:6}){ Row(){ Text('总资产') .fontSize(13) .fontColor(Color.Black) Image($r('app.media.eyes')) .width(14) .height(10) .margin({left:5}) .onClick(()=>{ this.showMoney = !this.showMoney }) } Text(this.showMoney? '2000':'****') .fontSize(30) .fontColor(Color.Black) .fontWeight(FontWeight.Bold) Text('今日收益 +13.3') .fontSize(12) .fontColor(Color.Gray) } .alignItems(HorizontalAlign.Start) .margin({left:26}) Row(){ Image($r('app.media.shield')) .width(16) .height(16) Text('开启保障') .fontColor(Color.White) .fontSize(13) .margin({left:6}) } .width(102) .height(30) .justifyContent(FlexAlign.Center) .backgroundColor('rgba(0,0,0,0.1)') .borderRadius({topLeft:15,bottomLeft:15}) } .width('100%') .justifyContent(FlexAlign.SpaceBetween)}
还有一个部分要注意,像热门推荐、稳健理财等部分,他们的标题可以使用List中Group的header来实现,这样实现的代码就比较简洁:
@Builder ListGroupHeader(title:string,subTitle:string){
Row({space:5}){
Text(title)
.fontColor(Color.Black)
.fontSize(18)
.fontWeight(FontWeight.Bold)
Text(subTitle)
.fontColor(13)
.fontColor('#999999')
}
.height(60)
.width('100%')
.padding({left:12,bottom:13})
.alignItems(VerticalAlign.Bottom)
}
以上就是本项目的一些难点。
鸿蒙Next开发实战教程--银行App的更多相关文章
- Swift游戏开发实战教程(霸内部信息大学)
Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建
上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立
上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...
- 微信小程序-云开发实战教程
微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...
- Python开发实战教程(8)-向网页提交获取数据
来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知 ...
- React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...
- HTML5 App商业开发实战教程 基于WeX5可视化开发平台
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作
/****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...
- android开发实战-记账本APP(二)
继昨天的开发,继续完成今天的内容. (一)开始构建一些业务逻辑,开始构建记账本的添加一笔记账的功能. ①对fab按钮的click时间进行修改,创建一个AlertDialog.Builder对象,因此我 ...
随机推荐
- QT5笔记: 28. SplashWindow 没听懂,无内容
没有说明这个SplashWindow咋用 大概小人愚笨 this->setWindowFlag(Qt::SplashScreen);莫非是这个?
- JUC并发—12.ThreadLocal源码分析
大纲 1.ThreadLocal的特点介绍 2.ThreadLocal的使用案例 3.ThreadLocal的内部结构 4.ThreadLocal的核心方法源码 5.ThreadLocalMap的核心 ...
- 使用Visual Studio 调式NDK so 库时,调试工具无法显示vector内容
最近在研究C++开发安卓端so库,demo使用xamarin.android作为载体来验证算法库文件的准确性.调试过程中发现vector中的内容无法显示集合详细.如下图 研究了半天(参考链接2.3), ...
- 奥特曼框架autMan对接微信(千寻、西瓜)框架的详细教程
教程只写常用的两:西瓜.千寻,都运行在windows平台上. 1.千寻对接 文章底部下载千寻微信框架 解压至win电脑 电脑安装微信3.6.0.18并关闭自动更新 运行千寻微信框架 5.千寻框架设置 ...
- GPU的硬件组成及运行原理
GPU的硬件组成 GPU 是一种专门为图形处理而设计的处理器,它的设计目标是在处理大规模.高并发的图形数据时提供高效的计算能力.与 CPU 相比,GPU 的处理器数量更多,每个处理器的计算能力相对较弱 ...
- grpc unable to determine Go import path for
前言 在 proto 文件夹下执行如下命令: $ protoc --go_out=plugins=grpc:. *.proto 报错:无法确定Go导入路径 protoc-gen-go: unable ...
- gland go list-m:无法识别的导入路径
可以使用go代理:https://goproxy.io 或者阿里云的镜像站:https://mirrors.aliyun.com/goproxy/ 重启即可
- PLSQL自动登录,记住用户名密码&日常使用技巧
配置启动时的登录用户名和密码 这是个有争议的功能,因为记住密码会给带来数据安全的问题. 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Develope ...
- 必看!SpringAI轻松构建MCP Client-Server架构
MCP 这个概念相信大家已经听了无数次了,但不同人会有不同的解释,你可能也是听得云里雾里的. 不过没关系,今天这篇内容会通过 Spring AI 给你实现一个 MCP 的 Client 和 Serve ...
- Linux权限之基础权限
介绍 Linux是多用户的操作系统,允许多个用户同时登录和工作,Linux权限是操作系统用来限制不同用户对资源的访问机制.这里暂且将Linux的权限分为三类: 基本权限:给文件和目录的所属者.所属组. ...