鸿蒙开发笔记

最近比较火,本身也是做前端的,就抽空学习了下。对前端很友好

原视频地址:黑马b站鸿蒙OS视频

下载安装跟着视频或者文档就可以了。如果你电脑上安装的有node,但是开发工具显示你没安装,不用动咱们的node,直接在开发工具里面点下载安装就行了

测试是否都安装成功,点击help,让后点击第一个,会弹出开发环境是否完整的测试

如果都是对号,则环境没有问题,如果有❌,后面下载对应的即可

设置汉化,跟idea是一样的,安装插件即可,找到setting,点击会弹出面板

在面板中找到plugin,搜索Chinese,然后勾选,点击应用,再点击确定,会弹出让你重进的选项,点击即可

首页

@Entry // 标记当前组件是入口组件
@Component // 标记是自定义组件
struct Index { // 自定义组件:可复用的UI单元@State w: number = 100 // @State用来修饰变量,值发生变化会触发ui刷新build() { // UI描述:内部以声明方式描述UI结构Row() { // 内置组件:布局类,用来控制行Column() { // 内置组件:布局类,用来控制列Text("你好 鸿蒙") // 内置组件:文本.fontColor("#f00") // 样式修改.fontWeight(600)}.width('100%')}.height('100%')}
}

点右面的预览器即可查看效果

组件使用

Image

代码案例

@Entry
@Component
struct Index {@State w: number = 30@State h: number = 30build() {Row() {Column() {Image($r('app.media.icon')).width(this.w).height(this.h).interpolation(ImageInterpolation.High) // 防锯齿}.width('100%')}.height('100%')}
}

注意:如果我们使用网络照片,就需要开通网络设置。就需要在module.json5文件中配置网络权限

附官网链接:访问控制授权申请

只需要在module.json5文件中加上配置即可

"requestPermissions":[{"name": "ohos.permission.INTERNET"}],

Text

  • 上面的base文件夹中的element文件夹里的string.json文件中,存放的就是后备的内容。如果地区都匹配不上,则就会使用这个里面的
  • 如果能正常匹配到地区,则就会使用匹配到地区里的string.json中声明的内容。

Text中如果使用本地资源,那么就可以做国际化了

例如我们在en_US文件夹中的string.json中写入一个键值对

爆红是因为在默认的里面没有配置对应的键值对

我们在base>>element>>string.json中配置对应的键值对

提示没有在zh_CN>>element>>string.json中配置。我们接着配置

都配置完后,就发现不报红了

然后Text就可以使用本地资源了

页面效果

可以看到内容显示了出来。我们再切换一下美国地区

可以看到,显示的就是en_US中我们配置的内容。用这个来实现国际化,方便了很多

TextInput

就是html中的input

代码案例

@Entry
@Component
struct Index {@State w: number = 30build() {Row() {Column() {Text($r('app.string.width_label')).fontSize(12)TextInput({ placeholder: '请输入图片宽度' }).width(200).onChange(val => { // 事件,每次输入值都会触发this.w = +val // 通过 加 运算符把字符型转为数字型})}.width('100%')}.height('100%')}
}

Button

代码案例

@Entry
@Component
struct Index {@State w: number = 30build() {Row() {Column() {Button("+").onClick(() => {this.w += 10})Button("-").onClick(() => {this.w -= 10})}.width('100%')}.height('100%')}
}

Slider

代码案例

@Entry
@Component
struct Index {@State w: number = 30build() {Row() {Column() {// 图片Image($r('app.media.icon')).width(this.w).interpolation(ImageInterpolation.High) // 防锯齿// 文本Text($r('app.string.width_label')).fontSize(12)TextInput({ placeholder: '请输入图片宽度' }).width(200).onChange(val => { // 事件,每次输入值都会触发this.w = +val // 通过 加 运算符把字符型转为数字型})// 按钮Button("+").onClick(() => {this.w += 10})Button("-").onClick(() => {this.w -= 10})// 滑块Slider({min: 0,max: 200,value: this.w,step: 20}).width('90%').showTips(true).onChange(val => {this.w = +val})}.width('100%')}.height('100%')}
}

布局

 布局分为行和列,分别对应 Row Column  。行和列都有自己的主轴和测轴(也就是交叉轴)

格式:

Row({ space: xx }) { // ... }        // 行

Column({ space: xx }) { // ... }   // 列

对齐方式

主轴和测轴都有对齐方式,具体的对齐方式跟flex布局的大差不差

主轴对齐方式

justifyContent(FlexAlign.具体的对齐方式)  // Row和Column都一样

测轴对齐方式

alignItems(VerticalAlign.具体的对齐方式)    // 这个是Row的

alignItems(HorizontalAlign.具体的对齐方式)    // 这个是Column的

案例代码

@Entry
@Component
struct Index {build() {Row() {Column({ space: 20 }) {Text("item1")Text("item2")Text("item3")Text("item4")}.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)}.height('100%')}
}

对齐方式图解

主轴(justifyContent)对齐方式(默认start)

  • 行(Row)和列(Column)的主轴都是用的  justifyContent

测轴对齐方式(默认center)

  • 行(Row)的测轴都是用的  VerticalAlign
  • 列(Column)的测轴都是用的  HorizontalAlign

了解基本的布局之后,我们就可以对上面的代码进行改造,让其变的更好看一点

@Entry
@Component
struct Index {@State w: number = 30build() {Row() {Column() {// 2. 让图片处于一个容器中,不然放大或者缩小都会影响下面的元素Row() {Image($r('app.media.icon')).width(this.w).interpolation(ImageInterpolation.High) // 防锯齿}.width(300).height(300).backgroundColor('#ccc') // 方便看清区域.justifyContent(FlexAlign.Center) // 只需要设置主轴即可,测轴默认就是center// 3. 让文本和输入框处于一行,且有个上下的外边距Row() {Text($r('app.string.width_label')).fontSize(12)TextInput({ placeholder: '请输入图片宽度', text: this.w + '' }).width(200).onChange(val => { // 事件,每次输入值都会触发if(+val <= 2000) {this.w = +val // 通过 加 运算符把字符型转为数字型} else {this.w = 200}})}.width('100%').justifyContent(FlexAlign.SpaceAround) // 设置主轴对齐方式.margin(10) // 设置外边距// 4. 让两个按钮处于一行Row() {Button("+").onClick(() => {this.w += 10})Button("-").onClick(() => {this.w -= 10})}.width('100%').justifyContent(FlexAlign.SpaceEvenly).margin('0 0 10 0')// 滑块Slider({min: 0,max: 200,value: this.w,step: 20}).width('90%').showTips(true).onChange(val => {this.w = +val})}.width('100%')}.height('100%').alignItems(VerticalAlign.Top) // 1. 行需要顶格,设置测轴对齐方式为Top}
}

效果如下

循环渲染

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

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

相关文章

15个Pandas代码片段助力数据分析

大家好&#xff0c;Python的Pandas库是数据分析的基本工具&#xff0c;提供了强大的数据操作和分析功能。本文将探讨15个高级Pandas代码片段&#xff0c;这些代码片段将帮助简化数据分析任务&#xff0c;并从数据集中提取有价值的见解。 1. 过滤数据 import pandas as pd# 创…

红队攻防实战之Access注入

若盛世将倾&#xff0c;深渊在侧&#xff0c;我辈当万死以赴 访问漏洞url: 1.Access联合查询 判断是否有注入 and 11正常&#xff0c;and 12出错 判断字段数 order by 7正常 order by 8出错 爆破出表名并判断回显点为2&#xff0c;5 查看字段内容&#xff0c;将字段名填入回…

12月1号作业

实现运算符重载 #include <iostream>using namespace std; class Person{friend const Person operator-(const Person &L,const Person &R);friend bool operator<(const Person &L,const Person &R);friend Person operator-(Person &L,const …

WakaTime一个用于跟踪和分析编程时间的工具

WakaTime是一个用于跟踪和分析编程时间的工具&#xff0c;它可以集成到各种代码编辑器和集成开发环境中&#xff0c;例如Visual Studio Code、Sublime Text、PyCharm等。它可以帮助开发人员了解他们花费在不同项目和编程语言上的时间&#xff0c;以及他们的编码习惯和生产力。 …

C语言实战演练之贪吃蛇游戏

贪吃蛇游戏的C语言实现主要包括以下几个步骤&#xff1a; 1. 初始化游戏界面&#xff1a; 设置窗口大小&#xff0c;背景颜色等。 2. 创建蛇的数据结构&#xff1a; 包括蛇头的位置、蛇身的长度、蛇身的坐标等。 3. 创建食物的数据结构&#xff1a; 包括食物的位置等。 4. 控制…

【面试HOT200】二叉树——广度优先搜索篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…

Leetcode 2952. Minimum Number of Coins to be Added

Leetcode 2952. Minimum Number of Coins to be Added 1. 解题思路2. 代码实现 题目链接&#xff1a;2952. Minimum Number of Coins to be Added 1. 解题思路 这一题思路上就是一个贪婪算法的思路&#xff0c;偏数学性多一点。 首先&#xff0c;我们将面值有序排列&#x…

SpringSecurity工作原理

实现功能就是继承这几个对应功能的类。 大概工作流程 Spring Security 的过滤器&#xff08;Filters&#xff09;和拦截器&#xff08;Interceptors&#xff09;是 Spring Security 框架中用于保护 web 应用安全的重要组件。它们在处理 HTTP 请求时扮演不同的角色&#xff0c…

Go 模块系统最小版本选择法 MVS 详解

目录 Golang 模块系统简介 包版本管理 最小版本选择&#xff08;MVS&#xff09;原理 MVS 的优点 MVS的缺点 实际使用MVS 小结 参考资料 Golang 模块系统简介 Golang 模块系统是 Go 1.11 版本引入的一个新特性&#xff0c;主要目的是解决 Go 项目中的依赖管理问题。在模…

Python IDLE: 一个简单易用的Python集成开发环境

简介 Python是一种高级编程语言&#xff0c;被广泛用于科学计算、数据分析、Web开发等领域。要编写和运行Python代码&#xff0c;您需要一个集成开发环境&#xff08;Integrated Development Environment&#xff0c;简称IDE&#xff09;。Python IDLE&#xff08;Integrated …

数学杂谈:残次品的无砝码天平定位问题

数学杂谈&#xff1a;残次品的无砝码天平定位问题 1. 问题描述2. 问题解答3. 问题拓展 1. 引理12. 引理23. 引理34. 推论15. 推论2 1. 问题描述 给出问题如下&#xff1a; 12个乒乓球&#xff0c;有一个次品&#xff0c;不知轻重&#xff0c;用一台无砝码天平称三次&#xf…

uni-app一些目录结构、方法、生命周期、打包、微信小程序登录与支付

1、关于uniapp的目录结构 跟普通vue项目目录结构差不多&#xff0c;多了几个核心文件&#xff0c;manifest.json是配置应用名称、appid、logo、版本等打包信息用的&#xff0c;pages.json的作用是配置页面路径、页面窗口样式、tabBar、navigationBar等页面类信息 2、页面适配方…

c# 浮点余数

double x; double y; double zx%y;对于以上代码 z&#xff08;如果不为零&#xff09;的符号与 x 的符号相同。 z 的绝对值是 |x| - n * |y| 得出的值&#xff0c;其中 n 是小于或等于 |x| / |y| 的最大可能整数&#xff0c;|x| 和 |y| 分别是 x 和 y 的绝对值。 代码示例&am…

【Node.js】笔记梳理 8 - API和JWT

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

什么是npm?能干什么?

npm是Node.js的包管理器。 npm的主要功能是管理node包&#xff0c;包括&#xff1a;安装、卸载、更新、查看、搜索、发布等。 npm是随同Node.js一起安装的包管理工具&#xff0c;能解决Node.js代码部署上的很多问题&#xff0c;常见的使用场景有以下几种&#xff1a; 允许用…

31、LCD1602功能函数代码

LCD1602功能函数代码 main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h"void main() {LCD_Init(); //LCD初始化LCD_ShowChar(1,1,A); //在1行1列显示字符ALCD_ShowString(1,3,"Hello"); //在1行3列显示字符串…

12月03日,每日信息差/菲律宾发生7.4级强震后共录得955次余震/腾讯惩处超 400 万个 QQ 号:这三大行为零容忍

_灵感 ​ &#x1f396; 中国联通&#xff1a;选举陈忠岳为公司董事长 &#x1f384; 菲律宾发生7.4级强震后共录得955次余震 &#x1f30d; 京沪高铁二线“收官段”尘埃落定&#xff1a;潍宿高铁初步设计正式获批 &#x1f30b; 我国燃料电池汽车产业进入提速关键期 &#…

树与二叉树堆:经典OJ题集(2)

目录 二叉树的性质及其问题&#xff1a; 二叉树的性质 问题&#xff1a; 一、对称的二叉树&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 二、另一棵树&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 三、翻转二叉树&#xff1a; 题目&#xff1a;…

synchronized和volatile的区别是什么?

synchronized和volatile是Java中的两个关键词&#xff0c;分别用于实现线程同步和线程间的可见性。 synchronized用于实现线程之间的互斥同步&#xff0c;即同一时刻只能有一个线程访问被synchronized修饰的代码块或方法&#xff0c;其他线程需要等待。synchronized确保了线程…