HarmonyOS4.0 ArkUI组件

目录

简介

搭建开发环境

ArkUI基础组件

Image组件

 Text组件

 TextInput

 Button

Slider


简介

HarmonyOS 4.0的ArkUI组件是一套UI开发框架,提供开发者进行应用UI开发时所必须的能力。在ArkUI中,组件是界面搭建与显示的最小单位,开发者通过多种组件的组合,构建出满足自身应用诉求的完整界面。

在ArkUI中,组件根据功能可以分为五大类:基础组件、容器组件、媒体组件、绘制组件、画布组件。这些组件的功能如下:

  1. 基础组件:是视图层的基本组成单元,包括Text(文本)、Image(图片)、TextInput(文本输入)、Button(按钮)、LoadingProgress(加载进度)等。
  2. 容器组件:用于封装和布局,比如ScrollView(滚动视图)和ListView(列表视图)等。
  3. 媒体组件:用于播放音频和视频,比如Video(视频)和Audio(音频)等。
  4. 绘制组件:用于自定义绘制图形,比如Canvas(画布)等。
  5. 画布组件:用于多态组件的适配,可以跨平台使用。

在ArkUI中,还支持多种布局方式,如Flex布局、Grid布局等。同时,为了提升用户体验,ArkUI还提供了丰富的动画效果和自定义动画能力。此外,ArkUI还支持多种绘制能力,以满足开发者绘制自定义形状的需求,支持图形绘制、颜色填充、文本绘制、图片绘制等。

搭建开发环境

下载安装软件DevEco Studio

因为下载安装软件官方已经有很详细的文档介绍,点击下方链接根据官网提示完成开发环境搭建

下载与安装软件-快速入门-入门-HarmonyOS应用开发

软件安装完成,开发环境也配置完成后,创建一个新的工程,选择“Empty Ability”模板,编辑名称等相关信息或者保持默认,点击下一步即可

 工程创建完成后,点击右侧的Previewer按钮,预览我们的项目,可以看见,第一个项目Hello Word界面就出来了

使用鸿蒙系统的手机来测试更贴合实际,但因为博主没有钱买华为,所以只能使用模拟器,点击右上角的devices,选择Device Manager

注意:电脑性能不是很好的小伙伴,不建议安装这个模拟器,初学使用预览功能足矣

 然后点击phone再点击New Emulator 

选择Phone-x86-api9,下载虚拟机,下载时间会有点久

 下载完成后启动虚拟机,桌面上就会有一部鸿蒙系统的手机用于测试

ArkUI基础组件

Image组件

用于在页面中插入图片的组件

1.网络图片

打开项目路径下的Index,将hello wrod部分去掉,代码换成👇面的,可以看见,预览窗口出现了一个图片。Image()中的URL是我在网上随意找的一个图片地址,这是Image组件的用法之一,可以渲染一个

@Entry
@Component
struct Index {

  build() {
    Row() {
      Column() {
        Image('https://ts1.cn.mm.bing.net/th/id/R-C.f5bba551c5fde389168f0ce9e2201145?rik=XapyqJ%2b6fXYCcw&riu=http%3a%2f%2fwww.kuaipng.com%2fUploads%2fwater%2ftext%2f2017%2f06-07%2fgoods_water_6525_698_698_.png&ehk=%2fQlYmSlVMMarF6BUBbl11xoDiHtfK0PHpSE85FRcP0s%3d&risl=&pid=ImgRaw&r=0')
          .width(300)
      }
      .width('100%')
    }
    .height('100%')
  }
}

2.本地图片 

本地图片引用只需将图片放在media文件夹中,然后通过 $r('app.media.图片名称') 进行引用

 Text组件

文字组件,用于插入文本内容

我们可以直接通过 Text('文字内容')  直接在页面中插入文本

但是这样子的文本是写死的,应用如果需要面向国际,有切换语言的需求,那么就需要使用Resource格式,读取本地资源,如下图,zh_CN是中国汉字,因此在stirng.json中加入

    {
      "name": "width_label",
      "value": "图片宽度:"
    }

 那么en_US自然是将value换成英文解析

    {
      "name": "width_label",
      "value": "Image Width:"
    }

base=>element=>下的是默认,当en_us和zh_CN都没找到合适的解析,就会在这里寻找匹配的键值,因此这里的string.json也要加上,这里随意加一种语言的就好

然后将 Text('文字内容') 换成 Text($r('app.string.name'))

 点击预览窗口上的 ... 将语言切换成en_US,可以看见,文字内容已经变成我们刚刚设置的英文解析

 TextInput

输入框组件

有两个可选参数,来设置提示词和默认内容,并且可以通过.type(InputType.Password)来设置成密码框模式。下面代码中,演示通过onChange在输入框内容改变时赋值给imagewidth达到设置图片宽度功能

@Entry
@Component
struct Index {
  @State imageWidth: number = 150

  build() {
    Row() {
      Column() {
        Image($r('app.media.icon'))
          .width(this.imageWidth)
        Text($r('app.string.width_label'))
          .fontSize(30)

        // 输入框未输入内容时的提示词
        TextInput({ placeholder: '请输入手机号:' })
          .width(300)
          .backgroundColor('#36D')

        // 输入框带默认内容
        TextInput({ text: '123456' })
          .width(300)
          .backgroundColor('red')

        // 输入框带默认内容
        TextInput({ text: 'admin' })
          .width(300)
          .type(InputType.Password)
          .backgroundColor('blue')

        //使用onChange做一个互动,输入数值来调整图片宽度
        TextInput({ placeholder: '请输入宽度:' })
          .width(300)
          .backgroundColor('#36D')
          .onChange(value=>{
            this.imageWidth = parseInt(value)
          })


      }
      .width('100%')
    }
    .height('100%')
  }
}

 Button

按钮组件,直接通过 Button('按钮名称') 添加按钮

我们示例通过添加两个按钮来对图片进行放大缩小

        Button('缩小')
          .width(80)
          .fontSize(20)
          .onClick(()=>{
            this.imageWidth -= 10
          })

        Button('放大')
          .width(100)
          .fontSize(30)
          .onClick(()=>{
            this.imageWidth += 10
          })

在onClick中,当按钮被点击时对图片宽度进行修改

Slider

滑块组件

滑块中的属性

  1. min::最小值
  2. max:最大值
  3. value:当前值,下面案例这里直接把图片初始宽度赋值给它
  4. step:滑块步长
  5. showtips 是否显示百分比
        Slider({
          min: 100,
          max: 300,
          value: this.imageWidth,
          step: 10
        })
          .width('90%')
          .showTips(true)
          .trackThickness(6)
          .onChange(value => {
            this.imageWidth = value
          })

 最后也是在onChange中将value赋值给图片宽度,达到拖动滑块改变图片大小的效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UEC++ 探索虚幻5笔记(捡金币案例) day12

吃金币案例 创建金币逻辑 之前的MyActor_One.cpp,直接添加几个资源拿着就用 //静态网格UPROPERTY(VisibleAnywhere, BlueprintReadOnly)class UStaticMeshComponent* StaticMesh;//球形碰撞体UPROPERTY(VisibleAnywhere, BlueprintReadWrite)class USphereCompone…

接口自动化测试过程中怎么处理接口依赖?

面试的时候经常会被问到在接口自动化测试过程中怎么处理接口依赖? 首先我们要搞清楚什么是接口依赖。 01. 什么是接口依赖 接口依赖指的是,在接口测试的过程中一个接口的测试经常需要依赖另一个或多个接口成功请求后的返回数据。 那怎么处理呢&#x…

MybatisPlus概述

MybatisPlus概述 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通…

Isaac Sim教程05 机器人简单组装及传感器

Isaac Sim 机器人简单组装及传感器了解 版权信息 Copyright 2023 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law.…

JVM arthas下载工具

工具下载地址 链接:https://pan.baidu.com/s/1qkn9HabhuwTiwbKVQ7BXnA?pwdv5ww 提取码:v5ww 启动语句 java -jar arthas-boot.jar输入你的线程,这里是2 dashboardJVM优化 堆的初始大小 最大大小 年轻代的大小 线程栈大小 新生代、伊甸…

ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译

ROS2的功能包、依赖管理、工作空间配置与编译 版权信息 Copyright 2023 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyrigh…

市域社会治理(智慧网格)解决方案:PPT全文47页,附下载

关键词:市域社会治理解决方案,智慧网格解决方案,市域社会治理重点内容,市域社会治理调研报告,智慧网格综合管理平台 一、市域社会治理建设背景 市域社会治理是在信息化背景下,为了适应城市化、现代化、社…

当发送“Hello,World”时,channel发生了什么?

一、Netty概述 1.Netty是什么? Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样? Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE …

个人作品集

个人作品集 封面设计 排版设计 3D建模 Pr剪辑 个人剪辑作品 场景搭建

国产AI边缘计算盒子,双核心A55丨2.5Tops算力

边缘计算盒子 双核心A55丨2.5Tops算力 ● 2.5TopsINT8算力,支持INT8/INT4/FP16多精度混合量化。 ● 4路以上1080p30fps视频编解码,IVE模块独立提供图像基础算子加速。 ● 支持Caffe、ONNX/PyTorch深度学习框架,提供resnet50、yolov5等AI算…

Java异常详解大全(2023版)

Java异常详解 异常分类1.Throwable2. Error(错误)3. Exception(异常)3.1 运行时异常 RuntimeException3.2 编译时异常(受检查异常)ClassNotFoundException + IOException4.常见的运行时异常5.异常如何处理Java 的异常处理是通过 5 个关键词来实现的:try、catch、throw、…

【从零开始学习JVM | 第二篇】字节码文件的组成

前言: 字节码作为JAVA跨平台的主要原因,熟练的掌握JAVA字节码文件的组成可以帮助我们解决项目的各种问题,并且在面试中,关于字节码部分的内容却是一大考点和难点,因此我们在这里穿插讲解一下字节码文件的组成。 目录 …

[跑代码-遇到问题-报错3]BK-SDM. KeyError: ‘up_blocks.0‘

File "src/kd_train_text_to_image.py", line 790, in mainKeyError: up_blocks.0 出问题的原因 dict acts_tea读到dict acts_stu没有读到dict 原因是 unet_teacher的结构后面直接接down_blocks(正常)unet_teacher.down_blocks 但是unet的结构…

java:springboot3集成swagger(springdoc-openapi-starter-webmvc-ui)

背景 网上集成 swagger 很多都是 Springfox 那个版本的,但是那个版本已经不更新了,springboot3 集成会报错 Typejavax.servlet.http.HttpServletRequest not present,我尝试了很多才知道现在用 Springdoc 了,今天我们来入门一下 …

对标Gen-2!Meta发布新模型进军文生视频赛道

随着扩散模型的飞速发展,诞生了Midjourney、DALLE 3、Stable Difusion等一大批出色的文生图模型。但在文生视频领域却进步缓慢,因为文生视频多数采用逐帧生成的方式,这类自回归方法运算效率低下、成本高。 即便使用先生成关键帧,再生成中间帧新方法。如…

aikit 2023 3D与机械臂结合!

引言 今天我们主要了解3D摄像头是如何跟机械臂应用相结合的。我们最近准备推出一款新的机械臂套装AI Kit 2023 3D,熟悉我们的老用户应该知道,我们之前的AI Kit 2023套装使用的是2D摄像头。 随着技术进步,市场需求和领域的扩大,2D的…

第一百九十回 自定义一个可选择的星期组件

文章目录 1. 概念介绍2. 实现方法2.1 实现思路2.2 实现方法3. 示例代码4. 内容总结我们在上一章回中介绍了"如何让Text组件中的文字自动换行"相关的内容,本章回中将介绍 如何自定义一个可选择的星期组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

在Word中移动页面主要靠导航窗格,有了它,移动页面就事半功倍

本文包括有关在Microsoft Word 2019、2016和Office 365中使用导航窗格移动页面以及复制和粘贴页面的说明。 如何设置导航窗格以重新排列页面 Microsoft Word并不将文档视为单独页面的集合,而是将其视为一个长页面。正因为如此,重新排列Word文档可能会很复杂。在Word中移动页…

C++ 操作MinIO做文件数据的上传和下载(踩坑与经验)包含编译包

前言 最近在做项目流程优化,准备将之前的java对文件的操作转换到c端,因此做了基于c的minio操作的测试demo。期间的各种踩坑与问题,花了一天时间总算是成功了,当然还有一些小问题,等待后续其他大拿解决。 项目环境 v…

linux 中crontab 定时任务计划创建时间文件夹示例

1.创建一个sh脚本 /usr/bin/mkdir 是mkdir命令的路径 /usr/bin/chmod 是chmod命令的路径 2.编辑定时任务 crontab -e