零基础开始学习鸿蒙开发-基础页面的设计

目录

 

1.样例图

2.逐项分析

        2.1 头顶布局分析:首先我们要把第一行的图标绘制出来,一个左一个右,很明显,需要放在一个Row容器中,具体代码如下:

        2.2  和头像同一行的布局,需要注意的是,头像要绘制成圆角,使用 borderRadius方法调整即可,具体代码如下

        2.3  下面一行有四列,需要保持一致,所以,需要在Row中添加Column容器,保证里面的子项垂直排列。具体代码如下:

        2.4  剩下的布局即菜单布局,一共有6个,具体代码如下。

3.完整的页面布局代码如下:

4.最终页面的运行效果如下

5.如代码有不足之处,欢迎各位博友批评和指正,吾将虚心接受建议,共同改进和进步。


 

1.样例图

 cbc47eee07f34496aee3b6c8552d5f63.png

        1.1 我们拿到布局图片,比如这一张图是UI设计图,我们首先要分析一下布局, 可以简单的用visio或者word绘制一下草图,来确定整个页面的布局。

        1.2 从图片中不难看出,该布局为垂直布局。

2.逐项分析

        2.1 头顶布局分析:首先我们要把第一行的图标绘制出来,一个左一个右,很明显,需要放在一个Row容器中,具体代码如下:

 Row({space:250}){Row(){Column(){Image($r('app.media.settings')).width(30).height(30)}.justifyContent(FlexAlign.Start)}//设置水平左对齐Column(){Image($r('app.media.msg')).width(30).height(30)}.justifyContent(FlexAlign.End)//设置顶部对齐,并且设置顶部间距}

        2.2  和头像同一行的布局,需要注意的是,头像要绘制成圆角,使用 borderRadius方法调整即可,具体代码如下

  Column(){Row(){Column(){Row(){Column(){Image($r('app.media.avator')).width(50).height(50).borderRadius(50)}.margin({left:20}).borderRadius(50).backgroundColor('#FFFF')Column(){Text('超级用户:admin').fontColor(Color.White)Row(){Text('金融会员').fontColor(Color.White).fontSize(10)}.width(80).height(30)}}.width('70%')}.justifyContent(FlexAlign.Start)//设置水平左对齐Column(){Column(){Text('96.5').fontSize(20).fontColor(Color.Gray)Text('小白信用').fontColor(Color.Gray)}.backgroundColor(Color.White).width(70).height(70).borderRadius(50)/* Shape(){Circle({ width: 70, height: 70 }).fill(Color.White)}*/}.justifyContent(FlexAlign.Start).width('20%')}.width('100%')}

        2.3  下面一行有四列,需要保持一致,所以,需要在Row中添加Column容器,保证里面的子项垂直排列。具体代码如下:

  Row({space:60}){Column(){Image($r('app.media.signIn')).width(20).height(20)Text('签到')}Column(){Image($r('app.media.sun')).width(20).height(20)Text('早起打卡')}Column(){Image($r('app.media.lunar')).width(20).height(20)Text('日历')}Column(){Image($r('app.media.task')).width(20).height(20)Text('任务')}}.justifyContent(FlexAlign.Start).width('100%').margin({left:20})

        2.4  剩下的布局即菜单布局,一共有6个,具体代码如下。

 Column(){Row({space:150}){Column(){Row({space:5}){Image($r('app.media.cardIcon')).width(20).height(20)Text('卡包')}.alignItems(VerticalAlign.Top)}Column(){Text('银行卡、优惠券').fontColor('#ff706f6f')}}.height(10).width('100%').margin({left:30})Row().height(45)//账单设计Row(){Column(){Row({space:5}){Image($r('app.media.payment')).width(20).height(20)Text('账单')}.alignItems(VerticalAlign.Top)}}.height(10).width('100%').margin({left:30})Row().height(45)Row(){Column(){Row({space:80}){Column(){Row({space:5}){Image($r('app.media.memberCenter')).width(20).height(20)Text('会员中心')}.alignItems(VerticalAlign.Top)}Column(){Text('会员红包派对,约起!').fontColor('#ff706f6f')}}}}.height(10).width('100%').margin({left:30})Row().height(45)Row(){Column(){Row({space:180}){Column(){Row({space:5}){Image($r('app.media.myAsset')).width(20).height(20)Text('我的资产')}.alignItems(VerticalAlign.Top)}Column(){Text('9999.99').fontColor('#ff706f6f')}}}}.height(10).width('100%').margin({left:30})Row().height(45)Row(){Column(){Row({space:180}){Column(){Row({space:5}){Image($r('app.media.iou')).width(20).height(20)Text('我的白条')}.alignItems(VerticalAlign.Top)}Column(){Text('去开通').fontColor('#ff706f6f')}}}}.height(10).width('100%').margin({left:30})//间隔行Row().height(45)Row(){Column(){Row({space:5}){Image($r('app.media.collection')).width(20).height(20)Text('我的收藏')}.alignItems(VerticalAlign.Top)}}.height(10).width('100%').margin({left:30})}

3.完整的页面布局代码如下:

@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Row() {//垂直布局Column() {//设置 和消息设置在同一行  ,alignItems设置为顶部布局Column(){Row(){Row({space:250}){Row(){Column(){Image($r('app.media.settings')).width(30).height(30)}.justifyContent(FlexAlign.Start)}//设置水平左对齐Column(){Image($r('app.media.msg')).width(30).height(30)}.justifyContent(FlexAlign.End)//设置顶部对齐,并且设置顶部间距}}Row(){}.height(50)//第二行Column(){Row(){Column(){Row(){Column(){Image($r('app.media.avator')).width(50).height(50).borderRadius(50)}.margin({left:20}).borderRadius(50).backgroundColor('#FFFF')Column(){Text('超级用户:admin').fontColor(Color.White)Row(){Text('金融会员').fontColor(Color.White).fontSize(10)}.width(80).height(30)}}.width('70%')}.justifyContent(FlexAlign.Start)//设置水平左对齐Column(){Column(){Text('96.5').fontSize(20).fontColor(Color.Gray)Text('小白信用').fontColor(Color.Gray)}.backgroundColor(Color.White).width(70).height(70).borderRadius(50)/* Shape(){Circle({ width: 70, height: 70 }).fill(Color.White)}*/}.justifyContent(FlexAlign.Start).width('20%')}.width('100%')}}.width('100%').backgroundColor('#ff47ace3')Row(){}.height(20)//第三行Row({space:60}){Column(){Image($r('app.media.signIn')).width(20).height(20)Text('签到')}Column(){Image($r('app.media.sun')).width(20).height(20)Text('早起打卡')}Column(){Image($r('app.media.lunar')).width(20).height(20)Text('日历')}Column(){Image($r('app.media.task')).width(20).height(20)Text('任务')}}.justifyContent(FlexAlign.Start).width('100%').margin({left:20})Row(){}.height(10)Row(){}.height(2).width('95%').backgroundColor(Color.Gray)Row(){}.height(5)//用Column控制相同间隔Column(){Row({space:150}){Column(){Row({space:5}){Image($r('app.media.cardIcon')).width(20).height(20)Text('卡包')}.alignItems(VerticalAlign.Top)}Column(){Text('银行卡、优惠券').fontColor('#ff706f6f')}}.height(10).width('100%').margin({left:30})Row().height(45)//账单设计Row(){Column(){Row({space:5}){Image($r('app.media.payment')).width(20).height(20)Text('账单')}.alignItems(VerticalAlign.Top)}}.height(10).width('100%').margin({left:30})Row().height(45)Row(){Column(){Row({space:80}){Column(){Row({space:5}){Image($r('app.media.memberCenter')).width(20).height(20)Text('会员中心')}.alignItems(VerticalAlign.Top)}Column(){Text('会员红包派对,约起!').fontColor('#ff706f6f')}}}}.height(10).width('100%').margin({left:30})Row().height(45)Row(){Column(){Row({space:180}){Column(){Row({space:5}){Image($r('app.media.myAsset')).width(20).height(20)Text('我的资产')}.alignItems(VerticalAlign.Top)}Column(){Text('9999.99').fontColor('#ff706f6f')}}}}.height(10).width('100%').margin({left:30})Row().height(45)Row(){Column(){Row({space:180}){Column(){Row({space:5}){Image($r('app.media.iou')).width(20).height(20)Text('我的白条')}.alignItems(VerticalAlign.Top)}Column(){Text('去开通').fontColor('#ff706f6f')}}}}.height(10).width('100%').margin({left:30})//间隔行Row().height(45)Row(){Column(){Row({space:5}){Image($r('app.media.collection')).width(20).height(20)Text('我的收藏')}.alignItems(VerticalAlign.Top)}}.height(10).width('100%').margin({left:30})}}.width('100%').height('100%')}.height('100%')}}

4.最终页面的运行效果如下

65918266e55c46f1b0b08ff5bf55103c.png

5.如代码有不足之处,欢迎各位博友批评和指正,吾将虚心接受建议,共同改进和进步。

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

211-基于FMC的1路1.5G ADC 1路 2.5G DAC子卡

一、板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC、1路AD同步信号子卡。板卡采用标准FMC子卡架构,可方便地与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集等领域。 二、功能介绍 2.1 原理框图 2.2 硬件…

HTML综合案例

这是一个HTML CSS的综合练习案例&#xff0c;效果如图所示&#xff1a; HTML代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

NPU是什么?电脑NPU和CPU、GPU区别介绍

随着人工智能技术的飞速发展&#xff0c;计算机硬件架构也在不断演进以适应日益复杂的AI应用场景。其中&#xff0c;NPU&#xff08;Neural Processing Unit&#xff0c;神经网络处理器&#xff09;作为一种专为深度学习和神经网络运算设计的新型处理器&#xff0c;正逐渐崭露头…

【多线程】synchronized使用以及原理详解

1. synchronized关键字的使用 synchronized关键字是对Java中的对象加锁&#xff0c;主要有3种使用形式 修饰实例&#xff08;普通&#xff09;方法 &#xff0c;锁的是当前的实例对象&#xff1b;修饰静态方法&#xff0c;锁的是当前类的Class对象&#xff0c;即使是不同的示…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(二)

文章目录 一、登录功能实现1、前端实现1.1 创建登录组件1.2 安装和配置Element Plus1.3 安装axios和调用后端接口2、后端实现2.1 创建数据表和准备数据2.2 配置MYSQL配置信息2.3 登录功能实现2.3.1 创建实体类2.3.2 创建登录服务接口及实现2.3.3 创建Mapper2.3.4 实现登录接口A…

ESP32-S3-devKitC-1 点亮板上的WS2812 RGB LED

ESP32-S3-devKitC-1 板上自带了一个RGB LED&#xff0c;型号为 WS2812。 RGB LED 在板上的位置如下图所示。 为了点亮这个WS2812&#xff0c;需要确定这颗RGB LED连接到哪个GPIO上了。 下面是确定GPIO管脚的过程&#xff1a; 1、根据原理图 2、根据PCB布局图&#xff1a; 程…

汽车电子元件的可靠性保障:AEC-Q102认证

AEC-Q102标准的起源与价值 随着汽车电子系统的日益复杂&#xff0c;电子器件必须能够在极端的温度、湿度、振动和电磁干扰等恶劣条件下保持性能。AEC-Q102标准由汽车电子委员会&#xff08;AEC&#xff09;制定&#xff0c;专门针对LED、激光二极管和光电二极管等光电器件&…

SQL中的联结表

本文介绍什么是联结&#xff0c;为什么使用联结&#xff0c;以及如何编写使用联结的SELECT语句。 1. 联结 SQL最强大的功能之一就是能在数据查询的执行中联结&#xff08;join&#xff09;表。联结是SQL的SELECT能执行的最重要的操作&#xff0c;理解联结及其语法是学习SQL的…

每天40分玩转Django:实操 Todo List应用

实操 Todo List应用 一、今日学习内容概述 学习模块重要程度预计学时主要内容项目初始化⭐⭐⭐⭐0.5小时创建项目、配置环境模型设计⭐⭐⭐⭐⭐1小时Todo模型设计与实现CRUD视图⭐⭐⭐⭐⭐2小时实现增删改查功能模板开发⭐⭐⭐⭐1.5小时页面布局与交互设计功能测试⭐⭐⭐1小时…

Freertos任务切换

一、操作系统进行任务切换的时机&#xff1a; 采用信号量实现任务的互斥&#xff1a; 二、FreeRTOS 任务切换场合 PendSV 中断的时候提到了上下文(任务)切换被触发的场合&#xff1a; ● 可以执行一个系统调用 ● 系统滴答定时器(SysTick)中断。 1、执行系统调用 执行系统…

【Linux】自定义项目-进度条

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 准备工作&#xff1a;"\r"与"\n"字符 ①&#xff1a;基本含义 在C语言和Linux环境中&#xff0c;\r是回车符&#xff0c;\n是换行符&#xff0c;用于控制文本格式和输出…

【ubuntu24.04】PDFMathTranslate 本地PDF翻译GPU部署

https://huggingface.co/spaces/reycn/PDFMathTranslate-Docker排不上号官方都是要安装包,感觉可以本地试着源码部署一下, http://localhost:7860/官方是这个端口,但是我本地启动是:5000IDEA 里本地 backend启动效果 GUI 是监听7860的

基于卷积神经网络的垃圾分类系统实现(GUI应用)

1.摘要 本文主要实现了一个卷积神经网络模型进行垃圾图像分类&#xff0c;为了提高垃圾分类模型的准确率&#xff0c;使用使用Batch Normalization层、使用早期停止策略来防止过拟合等方法来优化模型&#xff0c;实验结果显示最终优化后的模型准确率较高90%左右。最终&#xf…

Vulnstack红日安全内网域渗透靶场2实战攻略

一&#xff1a;环境搭建 新增的网卡VMnet2&#xff0c;ip调成10段。 PC配置如下&#xff1a; DC在该环境中充当是域控。DC配置如下 &#xff1a; WEB配置&#xff1a;需要两块网卡&#xff0c;相当于网关服务器。 作者把外网网段都写成了192.168.111.1/24&#xff0c;我们可以…

Http协议在网站中的体现

文章目录 1. Http协议简介2. 网站中的体现2.1 访问网站2.2 请求2.3 请求头2.4 请求方式2.5 响应 3. 总结 1. Http协议简介 HTTP&#xff08;超文本传输协议&#xff09; 是一种广泛应用于互联网上的应用层协议&#xff0c;用于在Web浏览器和Web服务器之间传输数据。HTTP协议定…

JavaWeb——前端三剑客

前言&#xff1a;今天开始学习JavaWeb相关内容了&#xff0c;陆续会总结一些前后端分离开发的相关知识&#xff0c;有遗漏和错误的地方欢迎大家指出~ 目录 一、前端三剑客二、HTML2.1 HTML介绍2.2 常用标签 三、 CSS3.1 CSS介绍3.2 CSS引用的三种形式3.3. CSS选择器及其类型3.…

【经典】制造供应链四类策略(MTS、MTO、ATO、ETO)细说

关注作者 制造供应链的牛鞭问题与复杂问题主要是从两个方面解决&#xff0c;一是同步化供应链消减从需求到供应的放大效应&#xff0c;二是供应链细分&#xff0c;针对不同的客户、不同的需求供应的匹配策略来应对复杂性&#xff0c;更好的满足客户并以最低的总成本来实现。 对…

fixture装饰器

普通代码案例&#xff1a; python本身执行 import pytestdef init_new():print("init_new...")return Truedef test_case(init_new):if init_new is True:print("如果init_new返回True&#xff0c;就执行用例test_case")if __name__ __main__:#用python本…

数智读书笔记系列008 智人之上:从石器时代到AI时代的信息网络简史

书名:智人之上&#xff1a;从石器时代到AI时代的信息网络简史 作者:&#xff3b;以&#xff3d;尤瓦尔赫拉利 译者:林俊宏 出版时间:2024-09-01 ISBN:9787521768527 中信出版集团制作发行 作者信息 尤瓦尔・赫拉利 1976 年出生于以色列海法&#xff0c;是牛津大学历史学…

【C++】10___文件操作

目录 一、文本文件---写文件 二、文本文件---读文件 三、二进制文件---写文件 四、二进制文件---读文件 一、文本文件---写文件 通过文件操作可以将数据持久化 对文件操作需要包含头文件<fstream> 文件类型分两类&#xff1a; 文本文件&#xff1a;文件以文本的ASCII码形…