【界面开发实战】使用DevEco Studio编写支付宝首页

embedded/2024/11/13 5:33:15/

效果展示

知识点

层叠布局

上一篇文章已经介绍了,这篇文章中不再赘述,如果想了解的话可以去看上一篇文章,链接如下:

http://t.csdnimg.cn/CnBZMicon-default.png?t=N7T8http://t.csdnimg.cn/CnBZM

弹性布局

作用:提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。

容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸。

主轴为水平方向的Flex容器示意图

主轴

Flex组件布局方向的轴线,子元素默认沿着主轴排列。主轴开始的位置称为主轴起始点,结束位置称为主轴结束点。

交叉轴

垂直于主轴方向的轴线。交叉轴开始的位置称为交叉轴起始点,结束位置称为交叉轴结束点。

布局方向

布局换行

弹性布局分为单行布局和多行布局。默认情况下,Flex容器中的子元素都排在一条线(又称“轴线”)上。wrap属性控制当子元素主轴尺寸之和大于容器主轴尺寸时,Flex是单行布局还是多行布局。在多行布局时,通过交叉轴方向,确认新行排列方向。

主轴对齐方式

通过justifyContent参数设置子元素在主轴方向的对齐方式。

交叉轴对齐方式

容器和子元素都可以设置交叉轴对齐方式,且子元素设置的对齐方式优先级较高。

页面滚动Scroll

作用:可滚动的容器组件,当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动。

属性
名称参数类型描述
scrollableScrollDirection

设置滚动方向

默认值:ScrollDirection.Vertical

scrollBarBarState

设置滚动条状态

默认值:BarState.Auto

说明:如果容器组件无法滚动,则滚动条不显示。如果容器组件的子组件大小为无穷大,则滚动条不支持拖动和伴随滚动。

scrollBarColor

string 

number

Color

设置滚动条的颜色
scrollBarWidth

string

number

设置滚动条的宽度,不支持百分比设置

默认值:4

单位:vp

说明:如果滚动条的宽度超过其高度,则滚动条的宽度会变为默认值

scrollSnap10+ScrollSnapOptions设置Scroll组件的限位滚动模式
edgeEffectEdgeEffect

设置滑动效果

默认值:EdgeEffect.None

enableScrollInteraction10+boolean

设置是否支持滚动手势,当设置为false时,无法通过手指或鼠标滚动,但不影响控制器的滚动接口

默认值:true

nestedScroll10+NestedScrollOptions嵌套滚动选项,设置向前向后两个方向上的嵌套滚动模式,实现与父组件的滚动联动
firction10+number
Resource

设置摩擦系数,手动划动滚动区域时生效,只对惯性运动过程中的链式效果有间接影响

默认值:非可穿戴设备为0.6,可穿戴设备为0.9

说明:设置为小于0的值时,按默认值处理

ScrollDirection枚举说明

名称描述
Horizontal仅支持水平方向滚动
Vertical仅支持竖直方向滚动
None不可滚动
Free(deprecated)支持竖直或水平方向滚动,从API version9开始废弃

代码展示

@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Stack({ alignContent: Alignment.Bottom }) {// 内容区域Stack({ alignContent: Alignment.Top }) {//   搜索区域Row() {// 地区和天气Column() {Row() {Text("北京").fontColor("#fff")Image($r("app.media.zfb_head_down")).margin({ top: 2, left: 5 }).width(10).fillColor("#fff")}.alignItems(VerticalAlign.Top)Text("晴 2℃").fontSize(12).fontColor("#fff")}.alignItems(HorizontalAlign.Start)//   搜索框Row() {Image($r("app.media.zfb_head_search")).width(20).fillColor("#666")Text("北京交通一卡通").margin({ left: 5 }).layoutWeight(1)Text("|").fontColor("#ccc")Text("搜索").width(55).textAlign(TextAlign.Center).fontWeight(700).fontColor("#6792E1")}.height(40).padding({ left: 10 }).margin({ left: 15, right: 15 }).layoutWeight(1).backgroundColor("#fff").borderRadius(10)//   更多Image($r("app.media.zfb_head_plus")).width(30).fillColor("#fff")}.padding(10).height(60).backgroundColor("#4B73EC").zIndex(66)//   滚动区域Scroll() {Column() {// 扫一扫区域Row() {Column() {Image($r("app.media.zfb_top_scan")).width(36).fillColor("#fff")Text("扫一扫").fontColor("#fff")}Column() {Image($r("app.media.zfb_top_pay")).width(36).fillColor("#fff")Text("收付款").fontColor("#fff")}Column() {Image($r("app.media.zfb_top_travel")).width(36).fillColor("#fff")Text("出行").fontColor("#fff")}Column() {Image($r("app.media.zfb_top_card")).width(36).fillColor("#fff")Text("卡包").fontColor("#fff")}}.padding({ top: 5, bottom: 15 }).width("100%").justifyContent(FlexAlign.SpaceAround).backgroundColor("#4B73EC")// 主体内容区域Column() {//   快捷菜单区域Flex({ wrap: FlexWrap.Wrap, }) {Column() {Image($r("app.media.zfb_nav1")).width(28)Text("滴滴出行").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav2")).width(28)Text("生活缴费").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav3")).width(28)Text("股票").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav4")).width(28)Text("蚂蚁森林").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav5")).width(28)Text("手机充值").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav6")).width(28)Text("余额宝").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav7")).width(28)Text("花呗").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav8")).width(28)Text("飞猪旅行").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav9")).width(28)Text("淘票票").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav10")).width(28)Text("饿了么").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav11")).width(28)Text("读书听书").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav12")).width(28)Text("基金").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav13")).width(28)Text("直播推广").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav14")).width(28)Text("医疗健康").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")Column() {Image($r("app.media.zfb_nav15_more")).width(28)Text("更多").margin({ top: 8, bottom: 10 }).fontSize("13").fontColor("#666")}.width("20%")}.padding(10)Row() {Image($r("app.media.zfb_pro_pic1")).width("30%")Image($r("app.media.zfb_pro_pic2")).width("30%")Image($r("app.media.zfb_pro_pic3")).width("30%")}.width("100%").justifyContent(FlexAlign.SpaceAround)Image($r("app.media.zfb_pro_list1")).width("97%").margin({ top: 10, bottom: 10 })Image($r("app.media.zfb_pro_list2")).width("97%").margin({ bottom: 10 })}.borderRadius({ topLeft: 20, topRight: 20 }).width("100%").backgroundColor("#f6f6f6")}}.scrollable(ScrollDirection.Vertical).width("100%").padding({ top: 60, bottom: 60 })}.height("100%")// tabBar区域Row() {Column() {Image($r("app.media.zfb_tab_home")).width(35)}.layoutWeight(1)Column({ space: 4 }) {Image($r("app.media.zfb_tab_money")).width(28)Text("理财").fontSize(14)}.layoutWeight(1)Column({ space: 4 }) {Image($r("app.media.zfb_tab_life")).width(28)Text("生活").fontSize(14)}.layoutWeight(1)Column({ space: 4 }) {Image($r("app.media.zfb_tab_chat")).width(28)Text("消息").fontSize(14)}.layoutWeight(1)Column({ space: 4 }) {Image($r("app.media.zfb_tab_me")).width(28)Text("我的").fontSize(14)}.layoutWeight(1)}.width("100%").height(60).backgroundColor("#fff")}.height("100%").width("100%").backgroundColor("#4B73EC")}
}


http://www.ppmy.cn/embedded/88999.html

相关文章

webGL + WebGIS + 数据可视化

webGL: 解释:用于在浏览器中渲染 2D 和 3D 图形。它是基于 OpenGL ES 的,提供了直接操作 GPU 的能力。 库: Three.jsBabylon.jsPixiJSReglGlMatrixOsgjs WebGIS: 解释:用于在 Web 浏览器中处理和展示地…

LUA脚本改造redis分布式锁

在redis集群模式下,我们会启动多个tomcat实例,每个tomcat实例都有一个JVM,且不共享。而synchronize锁的作用范围仅仅是当前JVM,所以我们需要一个作用于集群下的锁,也就是分布式锁。(就是不能用JVM自带的锁了…

如何确保AI生成的前端代码审查流程中,人工审查者的专业性和效率?

确保AI生成的前端代码审查流程中人工审查者的专业性和效率,可以采取以下措施: 专业培训: 定期对审查者进行前端开发和代码审查的专业培训,包括最新的前端技术、框架、工具和安全最佳实践。 选择经验丰富的审查者: 选…

RTL8852bs 初始化流程

梳理了 RTL8852bs wifi 驱动的加载流程. 方便熟悉代码逻辑和超找需要的功能. 我看了所有的代码,但是还是没有找到是哪里设置的AP模式. rtw_dev_probe() |---> sdio_dvobj_init()|---> devobj_init()|---> atomic_set()|---> sdio_init()|---> sdio_claim_host(…

linux shell 函数

脚本函数基础 创建函数 在 bash shell 脚本中创建函数的语法有两种。第一种语法是使用关键字 function,随后跟上分配给该代码块的函数名: function name {commands }name 定义了该函数的唯一名称。脚本中的函数名不能重复。 commands 是组成函数的一个…

【C++学习第18天】有向图 无向图

一、有向图的存储方式 &#xff08;1&#xff09;邻接矩阵&#xff1b;&#xff08;2&#xff09;邻接表 二、有向图的存储 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010, M N * 2;int h[N], e…

数据库漫游记:表、视图、函数、存储过程及触发器之跨平台兼容性分析(上)

先言之 &#x1f31f;余撰此文&#xff0c;乃为导引初窥数据库之学人&#xff0c;俾其明了表、视图、函数、存储过程及触发器之义理&#xff0c;及其于诸般平台之上创建、修改与废弃之法式。盖初学之人&#xff0c;常陷于迷雾之中&#xff0c;难辨东西&#xff0c;故须详述而明…

You can‘t run this command as root ( uid = 0 ).

最新的系统使用了是否使用 root 运行 php artisan 命令的检测&#xff0c;如果是 root 用户运行会提示 You cant run this command as root ( uid 0 ). 错误。 解决方法&#xff1a; sudo -u www /xxx/bin/php /www/example.com/artisan xxx其中&#xff0c; www 为运行用户…