鸿蒙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对象,因此我 ...
随机推荐
- Nginx~启动!!
前言 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.r ...
- .NET周刊【2月第2期 2025-02-09】
国内文章 开箱即用的.NET MAUI组件库 V-Control 发布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介绍了V-Control, ...
- [HAOI2018] 染色 题解
第一眼肯定想到容斥.设 \(G(k)\) 表示至少有 \(k\) 种颜色符合要求,\(F(k)\) 表示恰好有 \(k\) 种颜色符合要求.显然 \(k\) 的上界 \(t=\min(m,\lfloo ...
- Java中ArrayList的常见用法
Java 中的 ArrayList 是一个非常常用的动态数组,它属于 Java 集合框架的一部分.与普通数组不同,ArrayList 可以在需要时动态调整其大小.以下是 ArrayList 的一些详细 ...
- 有关C++程序设计基础的各种考题解答参考汇总
早先年考研的主考科目正是[算法与数据结构],复习得还算可以.也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考. [1] 原题目地址:https://zhidao.baid ...
- Scala Set集合 元素唯一,无序
package com.wyh.day01 /** * Set集合 * 唯一,无序 * * Set中大部分方法与List一致,但是不可以进行排序 */ object ScalaSet { def ma ...
- Codeforces Round 1006 (Div. 3) 比赛记录
Codeforces Round 1006 (Div. 3) 比赛记录 比赛链接 这场的题目名称都很长啊~. 很简单的一场(毕竟是div3,能不简单嘛)赛时切掉了A - F,C题花的时间有点多,G题偶 ...
- Vue2/Vue3 项目生产环境开启 vue devtools 插件线上调试 vue 组件
说到 vue 项目的调试工具,必然少不了 "vue devtools 插件",此插件就像"手术刀"一样,是开发环境下的一个利器,生产环境一般情况没办法使用. 要 ...
- Laravel11 从0开发 Swoole-Reverb 扩展包(三) - reverb广播驱动使用流程
前情提要 我们第一节的时候,已经大致介绍reverb,他 是 Laravel 应用程序的第一方 WebSocket 服务器,可将客户端和服务器之间的实时通信直接带到您的指尖.开源且只需一个 Artis ...
- go math/rand包详解
go math/rand package rand import "math/rand" rand包实现了伪随机数生成器. math_rand go官方标准文档 随机数从资源生成. ...