首页 > 其他分享 >HarmonyOS学习:项目进度列表实战

HarmonyOS学习:项目进度列表实战

时间:2024-12-07 11:00:21浏览次数:12  
标签:实战 vp height 布局 像素 单位 HarmonyOS 屏幕 列表

示例图

一、布局单位

在我们布局中,经常会采用px来作为布局的一个尺寸参考单位,这个单位在浏览器中已经是布局的标准。

在鸿蒙开发中,提出了一些新的单位用于布局。

物理像素:一般用px来表示。

逻辑像素:在布局的时候,底层针对物理像素和屏幕的尺寸关系进行了转化的中间层。

分辨率:代表在屏幕上面到底布局了多少个像素点(发光点)。

// 屏幕尺寸:1680px  分辨率:3560px 
div{
    width: 500px,
    height: 500px
}

这里写的的500px实际上参考3560px像素为布局,但是最终渲染出来的结果,转化为了1680px尺寸的比例。

鸿蒙开发中,要进行布局,我们采用官方提供的单位来实现

名称描述
px屏幕物理像素单位。预览器默认1080px,如果你的盒子100px,默认参考1080px来布局
vp屏幕密度相关像素,根据屏幕像素密度转换为屏幕物理像素,当数值不带单位时,默认单位vp。说明:vp与px的比例与屏幕像素密度有关。以屏幕的实际大小为参考布局(逻辑像素)
fp字体像素,与vp类似适用屏幕密度变化,随系统字体大小设置变化。
lpx视窗逻辑像素单位,lpx单位为实际屏幕宽度与逻辑宽度(通过designWidth配置)的比值,designWidth默认值为720。当designWidth为720时,在实际宽度为1440物理像素的屏幕上,1lpx为2px大小。

代码为:

@Entry
@Component
struct Page01 {
  @State message: string = 'Hello World';
​
  build() {
    Column(){
      Text("文本")
        .fontSize("30fp")  // 与不加单位时效果一样,但是当改变设备字体大小时也会跟着改变
      Row()
        .width("100vp")  // 以屏幕的实际大小为参考布局,与不加单位时效果一样
        .height("100vp")
        .backgroundColor("#ccc")
      Row()
        .width("100lpx")  // 1vp = 2lpx
        .height("100lpx")
        .backgroundColor("red")
    }
    .height('100%')
    .width('100%')
  }
}

总结:

1、如果采用px作为单位,在鸿蒙中参考的物理像素作为布局参考尺寸,物理像素的值可能是动态变化的,即放在不同手机上面,物理像素可能变化。

2、vp作为鸿蒙开发中我们推荐的单位,采用当前设备的屏幕宽度来作为我们布局的参考,不管物理像素到底是多少。可以减少屏幕之间布局差异。不写单位时默认是vp。

3、fp一般用于设置字体大小,不写单位时默认会采用vp作为字体大小单位。fp最大的特点是随着系统字体大小的变化而变化。

4、lpx这个单位要进行换算。当设计稿为720时,在实际宽度为1440物理像素的屏幕上,1lpx为2px大小。

二、Column和Row的布局

Column默认垂直方向为主轴,水平方向为侧轴。

Row默认水平方向为主轴,垂直方向为侧轴。

元素放在这两个容器中,子元素默认会在侧轴方向上面水平居中。

@Entry
@Component
struct Page01 {
  @State message: string = 'Hello World';
​
  build() {
    // 以弹性布局为基础来理解
    Column(){
      Column(){
        Text("你好,小王")
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          .fontColor("#12175E")
        Text("测试代码")
      }
      .width("100%")
      .height("50%")
      .backgroundColor(Color.Gray)
      .alignItems(HorizontalAlign.Start) // 侧轴(水平方向)对齐方式
      .justifyContent(FlexAlign.Center) // 主轴(垂直方向)对齐方式
        
      Row(){
        Text("Row1")
        Text("Row2")
      }
      .width("100%")
      .height("50%")
      .backgroundColor(Color.Orange)
      .alignItems(VerticalAlign.Top)  // 侧轴(水平方向)对齐方式
      .justifyContent(FlexAlign.SpaceBetween)  // 主轴(垂直方向)对齐方式
    }
  }
}

在布局过程中这两个组件都可以用alignItemsjustifyContent来调整子元素的布局方案。

三、关于颜色配置

Text("你好,小王")
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          // 设置颜色可以允许:英文单词、16进制、egb、枚举
          .fontColor("#12175E")

以后在布局中,但凡遇到需要配置颜色,我们可以采用四个方案来设计

.fontColor("#12175E")
.fontColor("rgb(233,456,12)")
.fontColor("red")
.fontColor(Color.orange) 

可以根据设计师提供的原稿进行颜色吸取并用于布局页面。

标签:实战,vp,height,布局,像素,单位,HarmonyOS,屏幕,列表
From: https://blog.csdn.net/2301_79727447/article/details/144306609

相关文章

  • HarmonyOS学习Day03
    #学习视频:bilibili蜗牛学苑#一、ArkTS实战ArkTS主要负责页面上数据维护、交互、以及基础属性的使用。ArkUI负责页面的布局。ArkTS负责对组件的数据、事件等等进行维护组件的参数在使用ArkUI进行布局的时候,组件采用括号的方式来引入使用Column(参数){//存放子元素}......
  • HarmonyOS学习Day02
    #学习视频:bilibili蜗牛学苑#Day02一、ArkTS介绍基本概念JS:前端浏览器端语言,弱类型语言,灵活,功能强大TS:TS是JS的一个超集,支持ES6标准(ES6教程)。TS由微软开发的自由和开源的编程语言,在JS的基础上增加了静态类型检查的超集。TS设计目标是开发大型应用,它可以编译成纯Java......
  • 【springboot编程】Spring Boot注解全面解析与实战指南
    SpringBoot的注解体系极大简化了Java应用程序的开发,减少了大量的手动配置和重复代码。通过使用注解,开发者能够快速构建具有复杂功能的应用程序,同时保持代码的简洁和可维护性。无论是异常处理、自动配置,还是依赖注入,这些注解都为开发者提供了灵活而强大的工具,使应用程序的开发......
  • 【邮件伪造】SPF与DKIM验证原理及实战解析(上)
    0x01前言大家好,我是VoltCary本篇文章是系列邮件安全专题的第一篇,主要帮助大家掌握邮件安全的基础知识。基础内容包括:SMTP协议邮件安全验证原理与过程SPF验证与DKIM签名验证原理掌握这些基础后,你将能够更好地理解邮件伪造的验证原理与绕过技巧,进而掌握邮件伪造的排查方式。......
  • 框架建设实战3——创建框架基础组件frame-base
    frame-base顾名思义,就是定义一些基础的类。便于框架进行规约。主要有(不限于)如下几点:1.接口基类publicclassBaseController{/***接口标准响应*@paramcodeDetail错误码编码*@parammessage错误码描述*@paramdata*@return......
  • 免费内网穿透,了解下?手把手搭建,三步搞定!网络安全零基础入门到精通实战教程!
    在内网部署的一个应用,想分享给外网的小伙伴玩玩?学校实验室有一台高性能服务器,在外网就无法使用?来吧,内网穿透,了解一下?1.关于内网穿透1.1什么是内网穿透且看百度百科的说法:内网穿透,也即NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不......
  • 实战分享:如何利用苹果免越狱手机群控系统进行批量控制与单控
    随着移动设备管理需求的不断增长,苹果免越狱手机群控系统成为了一种高效且安全的解决方案。该系统允许管理员在不破坏iOS安全机制的前提下,集中管理和控制多台iPhone或iPad。本章将通过具体案例和操作步骤,详细探讨如何利用这一系统实现批量控制和单控功能,帮助用户更好地理解和应用这......
  • 【机器学习】从入门到实战:深入解析 K 最近邻(KNN)算法在手写数字分类中的应用
    从入门到实战:深入解析K最近邻(KNN)算法在手写数字分类中的应用K最近邻(K-NearestNeighbors,KNN)算法基本原理特点总结实战基于KNN对手写数字进行分类超参数调节模型训练与测试性能评估与混淆矩阵绘制完整代码训练代码测试代码不同度量方法比较总结K最近邻(K-Nearest......
  • 一次彻底掌握数据中心级的JVM调优实战经验
    出现内存溢出的场景通常发生在应用程序中存在内存泄漏、对象生命周期过长、对象频繁创建但未能及时回收等问题。以下是几个真实的业务场景,结合内存溢出问题,并从多个角度提出优化方法,来提高内存使用效率。场景1:大量业务数据缓存导致堆内存溢出场景描述:一个企业级Web应......
  • RCE漏洞及绕过技巧:从基础到高级实战攻略
    文章目录常见漏洞执行函数:1.系统命令执行函数2.代码执行函数命令拼接符读取文件命令绕过:空格过滤绕过关键字绕过长度过滤绕过无参数命令执行绕过无字母数字绕过利用%0A截断利用回溯绕过利用create_function()代码注入无回显RCE1.反弹shell2.dnslog外带数据法3.msf反向回......