鸿蒙开发学习——基本组件

news2024/11/15 12:19:12

文章目录

    • 引言
    • 正文
      • Image组件
        • 设置加载网络图片
        • 图片属性设置
      • Text组件
        • 设置文本显示内容
        • text属性设置
      • TextInput输入文本
        • TextInput Controller
        • 获取输入文本
      • Button按钮

引言

  • 最近在学习鸿蒙系统开发,然后对着文档看还是有很多问题,这里结合官方给的demo进行学习,结合代码逐个介绍相关组件。

正文

  • 整个项目跑起来如下图:

在这里插入图片描述

  • 对应界面组成的组件如下图,下面结合代码逐个进行介绍。
    在这里插入图片描述

Image组件

  • 这个组件显示渲染图片,在登陆界面中是负责显示图标。对应代码如下
    • 这里是使用了resource数据加载图像,是直接调用项目中的资源文件。需要将图片添加到resources的media/rawfile目录下方,见图在这里插入图片描述
 Image($r('app.media.logo'))
        .width($r('app.float.logo_image_size'))
        .height($r('app.float.logo_image_size'))
        .margin({ top: $r('app.float.logo_margin_top'), bottom: $r('app.float.logo_margin_bottom') })
  • images介绍
    • 加载图片的方式有三种
      • 使用string字符串输入图片的网络连接,加载网络图片
        • Image('https://xxxxx')
      • 使用resource数据,加载保存在本地的图片
        • Image(pixelMapObject)
      • 使用pixelMap数据加载图像
        • Image($r('a[[.media.logo'))
          在这里插入图片描述
设置加载网络图片
  • 这里使用string指定需要加载的网络图片的连接,加载网络图片

    • 添加网络权限:需要在module.json5中添加网络访问权限在这里插入图片描述

    • 添加网络访问的地址:使用字符串的形式,添加网络访问的地址,需要指明是https的格式在这里插入图片描述

  • 最终的执行效果如下
    在这里插入图片描述

图片属性设置
  • 这里是设置图片的属性,相关属性是写在了对应的json文件中。
    在这里插入图片描述

  • 这里要将网络图片完整显示,使用ObjectFit属性进行调整,保证图片的完整显示,具体具体效果如下,分别有几种参数设计,具体如下

    • contain:保证宽高比,进行缩小和放大,使图片完整显示在边界里面在这里插入图片描述

    • cover:保证长宽比,图片两边大于等于显示边界在这里插入图片描述

    • auto:自适应显示在这里插入图片描述

    • fill:不保持长宽比,图片充满显示边界在这里插入图片描述

    • scaledown:保证长宽比,图片缩小或者保持不变在这里插入图片描述

    • None:保持原有尺寸显示在这里插入图片描述

Text组件

  • 就是文本组件,用来显示文本信息,可常规的安卓编程相同,可以使用string,直接设置对应的文本信息,或者使用resource,在对应的资源文件中设置对应的文本信息,具体如下
设置文本显示内容
  • string直接设置
    在这里插入图片描述

  • 使用resource资源文件进行设置在这里插入图片描述

    • 对应文本保存的路径是在,resource下的json文件在这里插入图片描述
text属性设置
  • 通过text有很多属性,可以指定对应的文字,具体如下
    • fontsize:设置文字大小
    • fontcolor:设置文字颜色
    • fontweight:设置文字粗细
  • 每一种属性设置的方式也很灵活,主要有两种
    • 直接输入对应的整型数值0x182431,或者string类型
    • 使用resource文件进行指定,写在对应的json文件中

在这里插入图片描述
#

TextInput输入文本

  • 下述为demo中登陆界面具体的代码和效果,主要是获取用户的账号和密码。对应代码解释如下
    • placeholder是输入账号的提示符,账号那里会提示输入账号,密码那里会提示输入密码

    • maxlength:允许输入的最大长度

    • type:指定的输入类型

    • inputStyle:显示对应的输入框的样式在这里插入图片描述

    • onchange:绑定对输入框的处理事件

在这里插入图片描述

TextInput Controller
  • 使用TextController控制TextInput中的相关操作,比如说光标变化,下述是官方给出的参考代码
@Entry
@Component
struct TextInputDemo {
  controller: TextInputController = new TextInputController()
 
  build() {
    Column() {
      TextInput({ controller: this.controller })
      Button('设置光标位置')
        .onClick(() => {
          this.controller.caretPosition(2)
        })
    }
    .height('100%')
    .backgroundColor(0xE6F2FD)
  }
}
  • 这里在原来的代码上进行修改,点击登陆时,如果没有输入,将光标移动到对应的位置中
  login(): void {
    if (this.account === '') {
      prompt.showToast({
        message: $r('app.string.account_input_empty_tips')
      }),
      this.controller.caretPosition(0) // 输入为空,将光标放到输入的账号上面
    }else if(this.password === ''){
      prompt.showToast({
        message:$r('app.string.password_input_empty_tips')
      }),
      this.controller_password.caretPosition(0)
  • 这个函数需要基于当前的文本输入中是有输入的,如果没空,并不能跳进来,所以没啥效果。
获取输入文本
  • 我们可以给TextInput设置onChange事件,输入文本发生变化时触发回调,下面示例代码中的value为实时获取用户输入的文本信息。
  • 具体使用代码如下
@Entry
@Component
struct TextInputDemo {
  @State text: string = ''
 
  build() {
    Column() {
      TextInput({ placeholder: '请输入账号' })
        .caretColor(Color.Blue)
        .onChange((value: string) => {
          this.text = value
        })
      Text(this.text)
    }
    .alignItems(HorizontalAlign.Center)
    .padding(12)
    .backgroundColor(0xE6F2FD)
  }
}

Button按钮

  • 整个界面包含了七个按钮,构成了这个页面的逻辑,但是并没有将所有的按钮都绑定对应的操作逻辑,响应用户的点击操作。具体如下

在这里插入图片描述

  • 登录按钮的样式和具体代码如下

在这里插入图片描述

Button($r('app.string.login'), { type: ButtonType.Capsule })  // type指定用户的按钮类型,还有其他两种样式normal,circle
        .width(CommonConstants.BUTTON_WIDTH)
        .height($r('app.float.login_button_height'))
        .fontSize($r('app.float.normal_text_size'))
        .fontWeight(FontWeight.Medium)
        .backgroundColor($r('app.color.login_button_color'))
        .margin({ top: $r('app.float.login_button_margin_top'), bottom: $r('app.float.login_button_margin_bottom') })
        .onClick(() => {
          this.login();
        }) // 响应用户的点击事件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在ARMv8中aarch64与aarch32切换

需求描述 在项目调试过程中,由于内存或磁盘空间不足需要将系统从aarch64切换到aarch32的运行状态去执行,接下来记录cortexA53的调试过程。 相关寄存器描述 ARM64: SPSR_EL3 N (Negative):表示运算结果的最高位,用于指示运算结果是否为负数。 Z (Zero):表示运算结果是否…

设计模式之建造者模式【创造者模式】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某…

c++语言基础17-判断集合成员

题目描述 请你编写一个程序&#xff0c;判断给定的整数 n 是否存在于给定的集合中。 输入描述 有多组测试数据&#xff0c;第一行有一个整数 k&#xff0c;代表有 k 组测试数据。 每组数据第一行首先是一个正整数 m&#xff0c;表示集合中元素的数量&#xff08;1 < m &…

程序媛的mac修炼手册--MacOS系统更新升级史

啊&#xff0c;我这个口罩三年从未感染过新冠的天选免疫王&#xff0c;却被支原体击倒&#x1f637;大意了&#xff0c;前几天去医院体检&#xff0c;刚检查完出医院就摘口罩了&#x1f926;大伙儿还是要注意戴口罩&#xff0c;保重身体啊&#xff01;身体欠恙&#xff0c;就闲…

微软截图工具SnippingTool_6.1.7601免费版

SnippingTool是一款win7系统自带的一款非常实用型截图工具&#xff0c;操作简单&#xff0c;点击“新建"可一键截图&#xff0c;截图之后会弹出编辑器&#xff0c;可以进行一些简单的勾画编辑操作&#xff0c;您可以使用笔、荧光笔、电子邮件或保存等选项。如果您的系统丢…

Liunx(CentOS)安装Nacos(单机启动,绑定Mysql)

Liunx安装Nacos(单机启动&#xff0c;绑定Mysql) 一&#xff0c;准备安装包 github下载点 二&#xff0c;在/usr/local/目录下创建一个文件夹用于上传和解压Nacos cd /usr/local/ #这里创建文件夹名字可随意&#xff0c;解压后会生成一个名为nacos的文件夹&#xff0c;后续…

全国计算机等级考试| 二级Python | 真题及解析(6)

全国计算机等级考试二级Python真题及解析(8)图文 一、选择题 1.python中表达式4**3=( )。 A.12 B.1 C.64 D.7 2.在Python中,通过( )函数查看字符的编码。 …

安全防御之授权和访问控制技术

授权和访问控制技术是安全防御中的重要组成部分&#xff0c;主要用于管理和限制对系统资源&#xff08;如数据、应用程序等&#xff09;的访问。授权控制用户可访问和操作的系统资源&#xff0c;而访问控制技术则负责在授权的基础上&#xff0c;确保只有经过授权的用户才能访问…

jQuery框架

1.1、jQuery简介 jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器&#xff0c;这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。目前超过90%的网站都使用了jQuery库&#xff0c;jQuery的宗旨&#xff1…

ElecardStreamEye使用教程(视频质量分析工具、视频分析)

文章目录 Elecard StreamEye 使用教程安装与设置下载安装 界面导航主菜单视频窗口分析窗口 文件操作打开视频文件 视频流分析帧类型识别码率分析分析报告 高级功能视觉表示比较模式自动化脚本 下载地址1&#xff1a;https://www.onlinedown.net/soft/58792.htm 下载地址2&…

计算机系统基础

C 语言相关内容省略&#xff0c;复习自用&#xff0c;仅供参考~ 概述 冯诺伊曼结构 存储程序工作方式&#xff1a;将事先编好的程序和原始数据送入主存后才能执行程序&#xff0c;程序被启动执行后&#xff0c;计算机能在不需要操作人员干预下自动完成逐条指令取出和执行的任…

【电商项目实战】实现订单超时支付取消

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

OpenHarmony源码转换器—多线程特性转换

本文讨论了如何将多线程的 Java 代码转换为 OpenHarmony ArkTS 代码​ 一、简介 Java 内存共享模型 以下示例伪代码和示意图展示了如何使用内存共享模型解决生产者消费者问题。 生产者消费者与共享内存间交互示意图 为了避免不同生产者或消费者同时访问一块共享内存的容器时…

阶段十-分布式-Redis02

第一章 Redis 事务 1.1 节 数据库事务复习 数据库事务的四大特性 A&#xff1a;Atomic &#xff0c;原子性&#xff0c;将所以SQL作为原子工作单元执行&#xff0c;要么全部执行&#xff0c;要么全部不执行&#xff1b;C&#xff1a;Consistent&#xff0c;一致性&#xff0…

Vue前端文字效果:如何让一段文本像是手动一个一个字打出来的

效果展示 自己做的AI聊天机器人界面&#xff0c;我觉得比微信还好看 由于这个前端略微复杂&#xff0c;下文用最简单的例子来展示&#xff1a; 分析需求 对于AI聊天工具的前端&#xff0c;如果AI生成的文本像是一个一个字打出来的&#xff0c;就会让AI看起来更像真的人&…

详解卡尔曼滤波(Kalman Filter)

1. 从维纳滤波到卡尔曼滤波 黑盒&#xff08;Black Box&#xff09;思想最早由维纳&#xff08;Wiener&#xff09;在1939年提出&#xff0c;即假定我们对从数据到估计中间的映射过程一无所知&#xff0c;仅仅用线性估计&#xff08;我们知道在高斯背景下&#xff0c;线性估计…

STM32 HAL库定时器触发DMA并口数据传输

代码目的&#xff1a; STM32与FPGA通讯&#xff0c;通过8位并口线进行通讯&#xff0c;16byte的数据在10us之内通过8位并口数据线传给FPGA&#xff0c;FPGA读取该数据。 HAL库设置说明&#xff1a; 时钟采用80MHz&#xff0c;由于16byte的数据要在10us之内传完&#xff0c;那…

[笔记] 使用 qemu 创建虚拟磁盘并安装 grub

之前使用 wsl 进行了直接创建虚拟磁盘并安装 grub,现在希望能够直接借助 qemu 的工具创建虚拟磁盘文件并安装 grub,由于需要用到 nbd(net block device网络块设备) 模块,在 wsl 中并不支持,因此这里使用到了 Hypver-V 虚拟机创建了一个 Ubuntu 系统,在系统中安装了 qemu 和 gru…

物联网安全:保护关键网络免受数字攻击

物联网 (IoT) 彻底改变了当今互联世界中的各个行业&#xff0c;实现了智能家居、自动驾驶汽车和先进的工业系统。然而&#xff0c;随着物联网设备数量的急剧增加&#xff0c;这些设备和相应网络的安全性已成为人们关注的焦点。本文旨在探讨物联网安全的重要性&#xff0c;同时简…

Pandas教程(五)—— 数据重塑透视及批量处理

1.数据重塑 重塑数据主要有两种方式&#xff0c;分别是 stack&#xff08;堆叠&#xff09;和 unstack&#xff08;拆堆&#xff09;&#xff0c;他们两个是互逆的操作 函数作用 data.stack&#xff08; &#xff09; 堆叠 会“旋转”或将列中的数据透视到行 列 一一> 行…