首页 > 其他分享 >鸿蒙Next开发实战教程--银行App

鸿蒙Next开发实战教程--银行App

时间:2024-11-22 14:34:15浏览次数:1  
标签:12 -- Text App Next width fontSize fontColor 导航

昨天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)
  }

以上就是本项目的一些难点。大家可以发送‘银行项目’获取项目源码。

标签:12,--,Text,App,Next,width,fontSize,fontColor,导航
From: https://www.cnblogs.com/youlanjihua/p/18562802

相关文章

  • CI/CD介绍
    CI/CD脚本是用于实现持续集成(ContinuousIntegration,CI)和持续交付/部署(ContinuousDelivery/Deployment,CD)流程的一段自动化脚本。它通常用于配置和控制CI/CD流水线,自动执行构建、测试、部署等任务,从而提升开发效率、代码质量和发布速度。CI/CD的核心概念持续集成(CI):......
  • GA/T1400视图库平台EasyCVR视频设备轨迹回放平台支持国密35114协议
    随着信息技术的飞速发展,安防视频监控领域也在不断演进,以适应更加复杂和多变的安全需求。在这一背景下,EasyCVR作为一款强大的安防视频监控平台,凭借其卓越的性能和广泛的兼容性,逐渐成为了众多企业和机构的首选。值得一提的是,视频设备轨迹回放平台EasyCVR不仅支持传统的视频监控协议,......
  • 在鸿蒙开发中实现完整的注册登录流程
    上次分享过一次注册登录的页面开发,不过不牵扯数据,今天加上数据存储实现一个完整的注册登录流程。数据存储方式采用比较常用的本地存储方式,用户首选项来实现。关于界面比较简单,之前的文章已经分享过,所以这里不再赘述,直接贴一个登录界面的代码,注册页面跟它也差不多:build(){St......
  • Ftp搭建虚拟用户模式
    Ftp搭建虚拟用户模式一、CentOS1.安装vsftp以及相关依赖yum-yinstallvsftpd*pam*db4*·vsftpd:ftp软件·pam:认证模块·DB4:支持文件数据库关闭selinuxsetenforce0#暂时关闭sed-ri's#(SELINUX=)enforcing#\1disabled#'/etc/selinux/config#永久关闭grep^......
  • .Net-Avalonia学习笔记(十)-Material.Avalonia
     Add Material.Avalonia nugetpackagetoyourproject:dotnetaddpackageMaterial.AvaloniaEdit App.xaml file:<Application...xmlns:themes="clr-namespace:Material.Styles.Themes;assembly=Material.Styles"...><Application......
  • iTerm2配置ssh的免输入密码连接
    iTerm2配置ssh的免输入密码连接第一步打开iTerm2,选择ITerm2->Settings进入设置页面后,点击Profiles,进入Profiles页面进入Profiles页面后点击+号,创建一个新的Profiles配置对新建的Profiles进行配置修改Name:主要是为了好区分不同的Profiles配置Command:这里有四个选项Logi......
  • 随笔存留
    已经很久了。不太愿意回忆。我习惯于为每段恋爱写个大致过程。然而,她,是我最不愿记载的篇章。7个月余。若以现实恋爱来说的话,她是我的初恋。相见,恰逢夏至。她急急忙忙的来到西安。接到她后,我害羞的问她可以牵手吗。她手小小的,握着却很踏实。因为有会议,她便在我宿舍躺着睡觉休息等......
  • Ansible快速入门
    Ansible快速入门一、介绍Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务。Ansible的特点1、ansible不需要单独安装客户端,也不需要启动任何服务2、ansible是python中的一套完整的自动化执行任务模块3、ansibleplaybo......
  • ssh免密配置种子脚本-ip映射
    settimeout60spawnsshroot@masterexpect{#首次连接"(yes/no)?"{send"yes\r";exp_continue}"password"{send"root\r"}}expect"~]#"{send"echo192.168.93.128master>>/etc/hosts\r&qu......
  • servlet示例
    packagecn.edu.xaut.servlet;importcn.edu.xaut.bean.UserBean;importcn.edu.xaut.dao.UserDao;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServl......