快速开发一个鸿蒙的页面

news2025/1/12 0:52:51

文章目录

  • 前言
  • 常用组件
  • 快速开启简单的鸿蒙页面
  • 总结
一、前言

鸿蒙要想快速上手,那么就需要对基础的组件使用比较熟悉,这里就罗列开发中常见的基础组件的使用。

只要是写android的,对于这些组件的使用还是能很快上手的,只要多多练习。

最后呢,这里会通过基础组件的使用,将他们放到页面中,这样有更直观的体验。

二、常用的基础组件
1、Image
     //图片组件
      Image($r('app.media.icon'))
      // Image($rawfile('test.png'))  //如果是rawFile 要加后缀名
        .width(50)
        .height(50)
        .borderRadius(10)
        .interpolation(ImageInterpolation.High) //图片的插值效果(去掉锯齿是图片清晰)
        .margin({bottom: 10})
        .onComplete(img =>{
          console.log("图片的宽度:" + img.width)
        })
        .onError(()=>{
           //图片加载报错,走这里
        })
2、Text
      //文本组件
      Text($r('app.string.register'))
        .fontSize(20)  //字体大小
        .lineHeight(30) //行高
        .fontColor('#00f') //字体颜色
        .fontWeight(FontWeight.Medium)//字体粗细
        .margin({bottom: 10})
        .onClick(()=>{
          console.log('点击事件')
        })
3、TextInput
        //文本输入框
        TextInput({placeholder:'请输入用户名'}) //这里头是提示文本
          .width('80%')
          .height(40)
          .backgroundColor('#cdcdcd')
          .margin({left: 10})

        //密码输入框
		TextInput({placeholder: '请输入密码'})
          .width('80%')
          .height(40)
          .backgroundColor('#cdcdcd')
          .type(InputType.Password) //输入文本类型
          .showPasswordIcon(true) //是否显示密码icon
          .margin({bottom: 10})
          .onChange(val=>{
            console.log('输入的值为:' + val)
          })
          .margin({left: 10})
4、Slider
        //滑动进度条
        Slider({
          value: this.high,
          min: 150,
          max: 190,
          step:1, //这里代表步长
          style: SliderStyle.InSet, //滑动头的是在里面,还是在里面
          direction: Axis.Horizontal, //滑动条的方向。默认是横向
          reverse: false //进度往哪个方向,是否是反向。默认是往右
        }).width('70%')
          .trackThickness(20) //滑轨的粗细
          .showTips(true) //是否显示进度条百分比
          .onChange(val =>{    //获取进度的值
            this.high = val
            console.log('进度长度:' + val)
          })
        Text(this.high.toString()).fontSize(20).fontWeight(FontWeight.Medium)
5、Select
		//下拉框组件
        Select([
          { value: '深圳'},
          { value: '广州'},
          { value: '北京'},
          { value: '上海'}
        ]).selected(1)  //默认选择的城市
          .value('请选择城市') //提示文本
          .font({size:20, weight: FontWeight.Medium})
          .onSelect((index,value) =>{
            console.log('选择的城市:' + value)
          })
6、Checkbox
      Row(){
        Text('兴趣:').fontSize(20)
        //多选框群组
        CheckboxGroup({group: 'checkGroup'})//控制是否全选或者全不选
          .selectedColor('#f00')
          .selectAll(true)  //默认是否全部选中,如果Checkbox 中的select 有值,那么子组件优先级高,这边就不生效
          .onChange((itemName: CheckboxGroupResult) =>{ //被选中的组件名及状态。全部选中的状态是0,全不选是2,有选中是1
            console.log('选中的框是:'+ itemName.name + ' 状态是:'+ itemName.status.toString())
          })
        Text('全选').fontSize(20)
        Checkbox({name: 'checkbox1', group: 'checkGroup'})
          .selectedColor('#f00')//选中的颜色
          .select(false) //这个优先级高于多选框群组的selectAll
          .onChange((value: Boolean) =>{
            console.log('checkbox1 是否选中:' + value)
          })
        Text('看书').fontSize(20)
        Checkbox({name: 'checkbox2', group: 'checkGroup'})
          .selectedColor('#f00')//选中的颜色
          .select(false)
          .onChange((value: Boolean) =>{
            console.log('checkbox2 是否选中:' + value)
          })
        Text('跑步').fontSize(20)
        Checkbox({name: 'checkbox3', group: 'checkGroup'})
          .selectedColor('#f00')//选中的颜色
          .select(false)
          .onChange((value: Boolean) =>{
            console.log('checkbox3 是否选中:' + value)
          })
        Text('钓鱼').fontSize(20)
      }.width('100%')
      .margin({bottom:10})
7、Radio
      Row(){
        Text('性别:').fontSize(20)
        //单选框组件 (记得写多组,不然点击看不出效果)
        Radio({value: '男', group: 'sex'})
          .height(20)
          .width(20)
          .checked(true)
          .onChange((isChecked: Boolean)=>{
            if (isChecked) {
              console.log('男生 是否选中:' + isChecked)
            }
          })

        Text('男').fontSize(20)

        Radio({value: '女', group: 'sex'})
          .height(20)
          .width(20)
          .checked(true)
          .onChange((isChecked: Boolean)=>{
            if (isChecked) {
              console.log('女生 是否选中:' + isChecked)
            }
          })
        Text('女').fontSize(20)
      }.width('100%')
三、布局
1、Column
     //垂直方向布局容器
      Column({space:20}){ //组件间的间距
        Text('组件一').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
        Text('组件二').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
      }.backgroundColor('#f00')
        .width('100%')
        .height(100)
        .justifyContent(FlexAlign.Center)//这里是column里面组件  主轴的布局方式。有居中,有放在开始,有放在结束等。
        .alignItems(HorizontalAlign.Start) //这里是column里面组件 交叉轴的布局方式。

2、Row
     //水平方向布局容器
      Row(){
        Text('组件一').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
        Text('组件二').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
      }.backgroundColor('#0f0')
      .width('100%')
      .height(50)
      .justifyContent(FlexAlign.Center)//主轴的布局方式,这是是居中
      .alignItems(VerticalAlign.Top) //交叉轴的布局方式,这里是放在顶部
      Text('组件三').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
        .margin(20)
3、Stack
//堆叠布局,后面的组件会覆盖在前面的组件上面
 Stack(){
        Image($r('app.media.icon'))
          .width(50)
          .height(50)

        Text('hello world')//这个控件覆盖在image上面
      }
      .width('90%')
      .border({radius: 20})
      .backgroundColor('#f00')
四、快速开启简单的鸿蒙页面

这是根据上面提到的组件和布局整理出来的,一个页面。下面是效果图。

在这里插入图片描述

最后呢,将我整理的这些组件都放到这个项目中,后面有新增,也会一并上传。开发中,某些api忘记了,可以重新拿出来看看。

以上代码地址:https://github.com/shenshizhong/ViewUseDemo

总结

1、罗列鸿蒙基础组件的使用
2、几个重要的布局组件的使用
3、快速撸一个简单的鸿蒙页面

如果对你有一点点帮助,那是值得高兴的事情。:)
我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad

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

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

相关文章

AI智能分析网关V4智慧环保/智慧垃圾站视频智能分析与监控方案

一、背景介绍 随着城市化进程的加速,垃圾处理问题日益受到人们的关注,传统的垃圾站管理方式已经无法满足现代社会的需求。针对当前垃圾站的监管需求,TSINGSEE青犀可基于旗下视频智能检测AI智能分析网关V4与安防监控视频综合管理系统EasyCVR平…

【STM32】江科大STM32学习笔记汇总(50)

00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM…

十年经验讲解功能测试的一些基本操作以及报告编写

一、 输入框测试 1. 字符型输入框: (1)字符型输入框:英文全半角、数字、空或者空格、特殊字符“~!#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用…

[递归与递推] 栈与卡特兰数

题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。 栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。 栈的重要性不言自…

每日一“类“:深入理解Qt的心脏《QObject》

Qt框架以其强大的跨平台能力和丰富的用户界面元素而广受开发者欢迎,而QObject类无疑是Qt框架心脏的所在。本文将深入探讨QObject,揭示其提供的核心功能以及如何在Qt项目中有效利用这个基类。 核心功能 信号与槽 Qt独特的信号与槽机制是其事件通信的基…

【Rust】——结构体struct

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

vue系列——vscode,node.js vue开发环境搭建

第一步安装node.js 推荐使用nvm进行node.js 的安装 nvm(Node.js version manager) 是一个命令行应用,可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 可以去网上查找相关版本 我这里使用 nvm-setu… 链接:https://pan.baidu.com/s/1UEUtmzw5x…

spring事务方法调用不生效的场景

同一个类中&#xff0c;事务方法调用非事务方法时&#xff0c;事务是可以生效的。反例事务不生效见以下 4. 同一个类中&#xff0c;方法内部调用 Autowired private XXXMapper xxxMapper; Autowired private YYYMapper yyyMapper; Transactional public ResultVO<AssetCh…

pag动效预览

潮玩apk里面分析静态资源发现动效有lottie 和pag文件 PAG官网 | PAG动效PAG动效组件可以降低或消除动效相关的研发成本&#xff0c;接入SDK后&#xff0c;设计师可通过PAGExpoter、PAGViewer等工具&#xff0c;一键将设计师在 AE 中制作的动效内容导出成素材文件&#xff0c;并…

【QT 5 +Linux下软件qt软件打包+qt生成软件创建可以安装压缩包+学习他人文章+第三篇:学习打包】

【QT 5 Linux下软件qt软件打包qt生成软件创建可以安装压缩包学习他人文章第三篇&#xff1a;学习打包】 1、前言2、实验环境3、自我学习总结-本篇总结&#xff08;1&#xff09;了解安装包的目录结构&#xff08;2&#xff09;了解要编写文件与编写脚本1. control文件2. postin…

vue3+vite 项目的创建

这里要提醒一下&#xff0c;如果我们要使用 vue3 的组合式api 的写法的话&#xff0c; 那么我们使用的 vue 版本不能低于 vue3.2 版本&#xff0c;不能低于 vue3.2 版本&#xff0c;不能低于 vue3.2 版本 vue2 已停止维护了&#xff0c; 现在全面拥抱vue3 之前用 vue-cli 创建…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:图片边框设置)

设置容器组件的图片边框样式。 说明&#xff1a; 从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 borderImage borderImage(value: BorderImageOption) 设置组件的图片边框。 卡片能力&#xff1a; 从API version 9开始…

2.2_4 调度算法的评价指标

文章目录 2.2_4 调度算法的评价指标&#xff08;一&#xff09;CPU利用率&#xff08;二&#xff09;系统吞吐量&#xff08;三&#xff09;周转时间&#xff08;四&#xff09;等待时间&#xff08;五&#xff09;响应时间 总结 2.2_4 调度算法的评价指标 注&#xff1a;要理解…

CentOs的yum报错: except KeyboardInterrupt, e:

1.报错 File “/bin/yum”, line 30 except KeyboardInterrupt, e: ^^^^^^^^^^^^^^^^^^^^ 2.原因&#xff1a;yum需要用python2编译&#xff0c;如果服务器安装的是python3.6并作为默认编译器的话&#xff0c;就会出现这个错误。 3.解决方法&#xff1a;whereis python 4.修改y…

【EI会议征稿通知】第三届新能源、储能与电力工程国际学术会议(NESP 2024)

第三届新能源、储能与电力工程国际学术会议&#xff08;NESP 2024&#xff09; 2024 3rd International Conference on New Energy, Energy Storage and Power Engineering (NESP 2024) 近几十年来&#xff0c;全球能源消耗迅速增加&#xff0c;因此寻找和开发性能优良的环保…

如何根据我的世界/Minecraft玩家数量选择合适的服务器配置,包括内存和CPU核心数的实际案例分析?

根据Minecraft玩家数量选择合适的服务器配置&#xff0c;首先需要考虑的是服务器的处理能力&#xff0c;这主要由CPU和内存决定。对于Minecraft服务器来说&#xff0c;CPU核心数直接影响到服务器能够同时处理的任务数量&#xff0c;而内存容量则决定了服务器能承载的人数。 对…

P1160 队列安排题解

题目 一个学校里老师要将班上N个同学排成一列&#xff0c;同学被编号为1∼N&#xff0c;他采取如下的方法&#xff1a; 先将1号同学安排进队列&#xff0c;这时队列中只有他一个人&#xff1b; 2∼N号同学依次入列&#xff0c;编号为i的同学入列方式为&#xff1a;老师指定编…

我写了个ImageWindow应用

文章目录 0 引言1 应用简介2 主要功能和特点2.1 多图像同/异步像素级对比2.2 支持多达30种图像格式2.3 高效率的图像处理性能 3 简明使用教程3.1 软件下载安装与更新3.1.1 软件下载与安装3.1.2 软件更新 3.2 多视窗添加并自动最优排列3.3 多样化图像导入方式3.4 自动切换显示模…

如何实现WordPress后台显示文章、分类目录、标签等的ID?

我们平时在使用WordPress的过程中&#xff0c;偶尔需要用到文章的ID&#xff0c;或分类目录ID&#xff0c;或标签ID&#xff0c;或媒体库ID&#xff0c;或评论ID&#xff0c;或用户ID等&#xff0c;但是WordPress后台默认是不显示它们的ID的。 今天boke112百科就跟大家分享如何…

Linux 下安装Jupyter

pip3 install jupyter pip3 install ipython -------------------------------------------- pip3 install jupyterlab jupyter lab pip3 list | grep jupyterlab 启动&#xff1a; python3 -m jupyter lab 2.安装朱皮特 pip3 install -i https://pypi.douban.com/simpl…