HarmonyOS基础组件的使用

news2024/12/25 23:54:32

ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。

HarmonyOS基础组件和Compose组件很相似,看过Compose组件的话再学习HarmonyOS基础组件会感觉非常熟悉。

HarmonyOS基础组件使用

Text

Text(this.src)
  .width('100%')
  .textAlign(TextAlign.Center)
  .padding(10)
    //背景颜色
  .backgroundColor(Color.Green)
    //字体颜色
  .fontColor(Color.White)
    //设置文本装饰线
  .decoration({
    //TextDecorationType.LineThrough:穿过文本的修饰线。
    //TextDecorationType.Underline:文字下划线修饰。
    type: TextDecorationType.Underline,
    color: Color.White
  })
    //设置文本超长显示
  .textOverflow({
    //末尾省略号显示
    overflow: TextOverflow.Ellipsis
  })
    //最大行数
  .maxLines(1)
  .onClick(() => {
    //返回上个页面
    // router.back()
    //返回到指定页面并带回参数
    router.back({
      url: 'pages/Index',
      params: {
        src: 'Second页面传来的数据'
      }
    });
  })

返回上个页面用router.back()

Image

Image($r("app.media.a"))
  //ImageFit.Auto:自适应显示。
  //ImageFit.Contain:保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。
  //ImageFit.Cover:默认值,保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。
  //ImageFit.Fill:不保持宽高比进行放大缩小,使得图片充满显示边界。
  //ImageFit.None:保持原有尺寸显示。
  //ImageFit.ScaleDown:保持宽高比显示,图片缩小或者保持不变。
  .objectFit(ImageFit.Contain)
  .width('100%')
  .height(200)
  .margin(5)

//Image加载网络图片
Image('https://lmg.jj20.com/up/allimg/4k/s/02/210924233115O14-0-lp.jpg')
  .width('100%')

引用的图片文件目录

网络权限添加在module.json5中

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
        //网络访问权限
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

TextInput

TextInput({ placeholder: '请输入账号' })
  //提示文本颜色
  .placeholderColor(0x999999)
    //提示文本大小及样式设置
  .placeholderFont({
    size: 20,
    weight: FontWeight.Medium,
    family: 'cursive',
    style: FontStyle.Italic
  })
  .fontColor(Color.Blue)
  .fontSize(20)
  .fontFamily('Arial')
  .margin(10)
    //输入类型设置
  .type(InputType.Password)
    //获取输入文本
  .onChange((value: string) => {
    this.text = value
  })

Button

//Button
Button($r('app.string.login_text'), {
  //ButtonType.Capsule:胶囊形按钮
  //ButtonType.Circle:圆形按钮
  // ButtonType.Normal:正常按钮
  type: ButtonType.Capsule,
  //是否开启点击效果
  stateEffect: true
})
  .width('90%')
  .height($r('app.float.button_height'))
  .fontSize($r('app.float.login_fontSize'))
  .fontWeight(FontWeight.Medium)
  .backgroundColor('#007DFF')
//包含子组件
Button({ type: ButtonType.Circle, stateEffect: true }) {
  Image($r('app.media.app_icon'))
    .width(30)
    .height(30)
}
.width(55)
.height(55)
.backgroundColor(0x317aff)
.margin(10)

宽高文件float.json

 

{
  "float": [
    {
      "name": "button_height",
      "value": "40vp"
    },
    {
      "name": "login_fontSize",
      "value": "18fp"
    }
  ]
}

 宽高单位用vp,字体大小用fp。

LoadingProgress

LoadingProgress()
  .color(Color.Blue)
  .height(60)
  .width(60)

路由跳转

引入

import router from '@ohos.router'

点击跳转

Text(this.message)
  .fontSize(50)
  .fontWeight(FontWeight.Bold)
  .onClick(() => {
    //pushUrl:跳转后当前页面还在
    //replaceUrl:跳转后当前页面销毁
    router.pushUrl({
      url: 'pages/Second',
      params: {
        src: 'Index页面传来的数据,Index页面传来的数据,Index页面传来的数据',
      }
    }, router.RouterMode.Single)
  })

下个页面接收

@State src: string = router.getParams()?.['src'];

完整代码:

Index.ets

import router from '@ohos.router'

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  @State src: string = '';

  onPageShow() {
    //Second页面带回的参数
    this.src = router.getParams()?.['src'];
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            //pushUrl:跳转后当前页面还在
            //replaceUrl:跳转后当前页面销毁
            router.pushUrl({
              url: 'pages/Second',
              params: {
                src: 'Index页面传来的数据,Index页面传来的数据,Index页面传来的数据',
              }
            }, router.RouterMode.Single)
          })

        Text(this.src)
      }
      .width('100%')
    }
    .height('100%')
  }
}

Second.ets

import router from '@ohos.router';

@Entry
@Component
struct TextDemo {
  @State src: string = router.getParams()?.['src'];
  @State text: string = ''

  build() {
    Column() {
      //Text
      Text(this.src)
        .width('100%')
        .textAlign(TextAlign.Center)
        .padding(10)
          //背景颜色
        .backgroundColor(Color.Green)
          //字体颜色
        .fontColor(Color.White)
          //设置文本装饰线
        .decoration({
          //TextDecorationType.LineThrough:穿过文本的修饰线。
          //TextDecorationType.Underline:文字下划线修饰。
          type: TextDecorationType.Underline,
          color: Color.White
        })
          //设置文本超长显示
        .textOverflow({
          //末尾省略号显示
          overflow: TextOverflow.Ellipsis
        })
          //最大行数
        .maxLines(1)
        .onClick(() => {
          //返回上个页面
          // router.back()
          //返回到指定页面并带回参数
          router.back({
            url: 'pages/Index',
            params: {
              src: 'Second页面传来的数据'
            }
          });
        })

      //Image加载本地图片
      Image($r("app.media.a"))
        //ImageFit.Auto:自适应显示。
        //ImageFit.Contain:保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。
        //ImageFit.Cover:默认值,保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。
        //ImageFit.Fill:不保持宽高比进行放大缩小,使得图片充满显示边界。
        //ImageFit.None:保持原有尺寸显示。
        //ImageFit.ScaleDown:保持宽高比显示,图片缩小或者保持不变。
        .objectFit(ImageFit.Contain)
        .width('100%')
        .height(200)
        .margin(5)

      //Image加载网络图片
      Image('https://lmg.jj20.com/up/allimg/4k/s/02/210924233115O14-0-lp.jpg')
        .width('100%')

      TextInput({ placeholder: '请输入账号' })
        //提示文本颜色
        .placeholderColor(0x999999)
          //提示文本大小及样式设置
        .placeholderFont({
          size: 20,
          weight: FontWeight.Medium,
          family: 'cursive',
          style: FontStyle.Italic
        })
        .fontColor(Color.Blue)
        .fontSize(20)
        .fontFamily('Arial')
        .margin(10)
          //输入类型设置
        .type(InputType.Password)
          //获取输入文本
        .onChange((value: string) => {
          this.text = value
        })

      Text(this.text)

      //Button
      Button($r('app.string.login_text'), {
        //ButtonType.Capsule:胶囊形按钮
        //ButtonType.Circle:圆形按钮
        // ButtonType.Normal:正常按钮
        type: ButtonType.Capsule,
        //是否开启点击效果
        stateEffect: true
      })
        .width('90%')
        .height($r('app.float.button_height'))
        .fontSize($r('app.float.login_fontSize'))
        .fontWeight(FontWeight.Medium)
        .backgroundColor('#007DFF')

      //包含子组件
      Button({ type: ButtonType.Circle, stateEffect: true }) {
        Image($r('app.media.app_icon'))
          .width(30)
          .height(30)
      }
      .width(55)
      .height(55)
      .backgroundColor(0x317aff)
      .margin(10)

      //LoadingProgress
      LoadingProgress()
        .color(Color.Blue)
        .height(60)
        .width(60)
    }
    .width('100%')
  }
}

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

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

相关文章

React事件处理

目录 前言 1. 添加事件处理函数 2. 传递参数 使用箭头函数 使用bind方法 3. 阻止默认行为和冒泡 阻止默认行为 阻止事件冒泡 4. 最佳实践 前言 React是一个流行的JavaScript库,用于构建用户界面。在React中,事件处理是非常重要的一部分&#xf…

基于springboot 的小小宠物领养平台的设计与实现

摘 要 社会经济正在不断进步和发展,互联网技术更新迭代之快超乎人们的想象,在线宠物领养系统是一种全新的方式。通过互联网可以搜索到任何东西,只要你输入关键字词,搜索引擎就会把对应的信息给搜索出来。喜欢宠物的人士需要有一…

Jetcache开启FASTJSON2序列化

为什么要用Jetcache JetCache是一个基于Java的缓存系统封装,它提供统一的API和注解来简化缓存的使用。JetCache比SpringCache更强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 以前使用红薯…

MySQL 优化思路篇

MySQL 优化思路篇 1、MySQL 查询的优化步骤2、查询系统性能参数3、慢查询日志定位问题3.1、开启慢查询日志参数3.2、查看慢查询数目3.3、慢查询日志的分析工具 mysqldumpslow3.4、关闭慢查询日志3.5、慢查询日志的删除与重建 4、SHOW PROFILE :查看SQL执行成本 1、…

【每日OJ题—— 203. 移除链表元素(指针)】

每日OJ题——203. 移除链表元素(指针) 1.题目:203. 移除链表元素2.方法讲解2.1.解法一:2.1.1.图文分析2.1.2.代码实现2.1.3.提交结果展示 2.2.解法二:2.2.1.图文分析2.2.2.代码实现2.2.3.提交结果展示 1.题目&#xff…

期 货 跟 单/资 管 分 仓/镜像跟单/外 盘 分 仓的全面介绍!

期货跟单是经过科学的筛选找出合格的目标样本数据然后利用样本交易数据转化成未来实际账面利润的综合性过程。 期货跟单分为正向跟单和反向跟单,简单地说就是找出期高手正向跟随高手赚取收益或找出期货低手反向跟随赚取收益。 期货跟单软件是实现跟单过程自动化的工…

案例精选|聚铭综合日志分析系统夯实徐州公交集团网络环境基础

徐州市公共交通集团有限公司成立于1960年,现隶属徐州市交通控股集团有限公司,下辖7家运营公司,1家站务公司,8家直属单位及13个职能部室。运营车辆2364辆,线路177条,线路长度3560公里,日发送班次…

后端神器!代码写完直接调试!

Apipost推出IDEA插件非常省时高效,写完代码直接可以进行调试,而且支持生成接口文档,真是后端神器啊! 可以点击下方链接安装更新或在插件商店中搜索安装 下载链接:https://plugins.jetbrains.com/plugin/22676-apipos…

gdb调试内核

1、设置内核配置 CONFIG_KGDBy, CONFIG_DEBUG_INFO y, CONFIG_FRAME_POINTERy,CONFIG_STRICT_KERNEL_RWX is not set 屏蔽掉该选型 然后重新给板子烧录内核镜像 2、进入uboot,设置bootargs,添加kgdboc参数 setenv bootargs mem512M consolettyAMA0,…

通付盾WAAP网络与数据安全Agent深度解析

引言: ​随着现代Web应用程序的发展、应用程序环境和威胁的代际转变,应用的去中心化和分布式趋势明显,Bot和自动攻击的日益复杂化,移动应用使用量的增加和现代应用开发带来的API端点的激增,极大地扩展了威胁面&#x…

安达发|汽车零配件在生产上常常会遇到哪些困难?

汽车零配件在生产上常常会遇到许多困难,这些困难涉及到技术、质量、成本和供应链等多个方面。以下是一些常见的困难及其解决方案: 1.技术难题:汽车零配件的生产需要高度的技术支持,尤其是在新材料、新工艺和新设备的应用上。解决技…

多模态模型的语言幻觉和视觉幻觉

HALLUSIONBENCH: You See What You Think?Or You Think What You See? An Image-Context Reasoning Benchmark Challenging for GPT-4V(ision),LLaVA-1.5, and Other Multi-modality Models 论文链接 github地址 论文中提出大的多模态模型出现“语言幻觉”和视觉错觉由下面…

媒介盒子分享:提升软文转化率的秘诀

哈喽大家好,今天盒子来和大家分享的干货内容是如何提升软文转化率。 优质内容能够打动消费者,促使消费者完成购买行为,这就是软文的作用,软文想要提升转化率,要做好以下五个关键点。 一、 把握用户需求 只要把握用户…

MobaXterm使用VNC远程操作ubuntu桌面

目录 1 在ubuntu中安装vnc 2 设置ubuntu远程连接 3 MobaXterm中连接ubuntu的vnc 1 在ubuntu中安装vnc 参考:Ubuntu18.04~Ubuntu22.04安装并配置VNC_ubuntu安装vnc-CSDN博客 大体流程就是在ubuntu中安装vnc,设置密码,然后配置服务&#x…

Linux(CentOS)安装MySQL教程

主要参考链接 教程 1. 准备工作 1.1 安装CentOS虚拟机 教程点击 1.2 将CentOS虚拟机设置为静态IP,否则你每次重启虚拟机后连接数据库都要重新查IP 教程点击 1.3 如果有安装过MySQL,请先卸载MySQL 教程点击 1.4 虚拟机执行命令su切换到root账号(输…

「图像 cv2.seamlessClone」无中生有制造数据

上一篇博客【「图像 merge」无中生有制造数据 】写的是图片直接融合,此方法生成的图片相对而言比较生硬,虽然目标图片已经透明化处理过了,但是生成的图片依旧很假 除了上述上述的图片叠加融合之外,还有一种更加自然的融合方法&…

Java 性能优化之直接使用成员变量 VS 拷贝副本

背景 刷到一个大佬的 CSDN 博客,仔细看了一下性能优化专栏。联想到我们的日常开发工作,由于业务比较简单,很容就忽略性能问题。但是,性能优化的一下常见思路,也早有耳闻。看了一个 Java 性能优化的方法 「减少操作指令…

最新版一媒体7.3、星媒体、皮皮剪辑,视频MD ,安卓手机剪辑去重神器+搬运脚本+去视频重软件工具

最新版一媒体app安卓版介绍: 这是一款功能强大的视频搬运工具,内置海量视频编辑工具,支持一键智能化处理、混剪、搬运、还能快速解析和去水印等等,超多实用功能等着您来体验! 老牌手机剪辑去重神器,用过的…

导轨在数控机床中起哪些作用?

数控机床导轨是数控机床中重要的组成部分,其主要作用有以下几个方面: 1、导向和承载作用:数控机床的导轨是机床各部件运动的导向轨道,它引导机床各部件按照规定的轨迹和速度进行运动,同时承受和分散运动部件的重力和切…