企业邮箱是什么?/整站seo怎么做

企业邮箱是什么?,整站seo怎么做,如何介绍自己的网页设计,手机端网站开发的意义介绍 本篇Codelab是基于Flex容器组件,实现弹性布局效果。弹性布局的特点是页面元素的宽度按照屏幕分辨率进行适配调整,但整体布局不变。 相关概念 Flex组件:以弹性方式布局子组件的容器组件。Search组件:搜索框组件,…

介绍

本篇Codelab是基于Flex容器组件,实现弹性布局效果。弹性布局的特点是页面元素的宽度按照屏幕分辨率进行适配调整,但整体布局不变。

相关概念

  • Flex组件:以弹性方式布局子组件的容器组件。
  • Search组件:搜索框组件,适用于浏览器的搜索内容输入框等应用场景。
  • Text组件:显示一段文本的组件。
  • Image组件:图片组件,支持本地图片和网络图片的渲染展示。
  • Scroll组件:可滑动的容器组件,当子组件的布局尺寸超过父组件的视口时,内容可以滑动。
  • 条件渲染:条件渲染可根据应用的不同状态,使用if、else和else if渲染对应状态下的UI内容。
  • 循环渲染:基于数组类型数据执行循环渲染。

环境搭建

软件要求

  • DevEco Studio版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 开发板类型:润和RK3568开发板。
  • OpenHarmony系统:3.2 Release。

环境搭建

完成本篇Codelab我们首先要完成开发环境的搭建,本示例以RK3568开发板为例,参照以下步骤进行:

  1. 获取OpenHarmony系统版本:标准系统解决方案(二进制)。以3.2 Release版本为例:

2.搭建烧录环境。

  1. 完成DevEco Device Tool的安装
  2. 完成RK3568开发板的烧录

3.搭建开发环境。

  1. 开始前请参考工具准备,完成DevEco Studio的安装和开发环境配置。
  2. 开发环境配置完成后,请参考使用工程向导创建工程(模板选择“Empty Ability”)。
  3. 工程创建完成后,选择使用真机进行调测。

代码结构解读

本篇Codelab只对核心代码进行讲解。

├──entry/src/main/ets	           // 代码区
│  ├──common
│  │  └──constants
│  │     └──StyleConstants.ets     // 样式常量类 
│  ├──entryability
│  │  └──EntryAbility.ts           // 程序入口类
│  ├──pages
│  │  └──HomePage.ets              // 主界面	
│  ├──view
│  │  ├──ClearSearch.ets           // 清除历史记录自定义组件
│  │  ├──FlexLayout.ets            // 弹性布局自定义组件
│  │  └──SearchInput.ets           // 搜索输入框自定义组件
│  └──viewmodel
│     └──SearchViewModel.ets       // 历史搜索数据类
└──entry/src/main/resources        // 资源文件目录

编写搜索框布局

在这个章节中,我们需要完成搜索框布局的编写,并实现文本输入和点击事件。效果如图所示:

在ets目录下,点击鼠标右键 > New > Directory,新建名为view的自定义子组件目录。然后在view目录下,点击鼠标右键 > New > ArkTS File,新建名为SearchInput的ArkTS文件。最后在SearchInput.ets文件中,逐步完成如下操作:

  1. 使用@Component新增一个自定义组件,组件名为SearchInput。
  2. 在build()中使用Flex作为容器组件,实现子组件水平排列。
  3. 使用Search组件作为搜索框布局,Text组件作为搜索文本按钮布局。
// SearchInput.ets
@Component
export default struct SearchInput {build() {Flex({ alignItems: ItemAlign.Center }) {// 搜索框布局Search()...// 搜索文本按钮布局Text($r('app.string.search'))...}...}
}

接下来我们实现Search组件的样式及输入功能,并将输入的数据添加到数组searchArr中:

  1. 使用@State定义变量searchInput,存储搜索框输入的文本内容。
  2. 在Search组件参数中,将变量searchInput赋值给参数value,参数placeholder填写提示内容,参数icon表示搜索图标路径。
  3. 设置高度height、宽度width、背景颜色backgroundColor、提示内容颜色placeholderColor等属性。
  4. 设置onChange事件,将用户输入的内容绑定到变量searchInput中。
  5. 使用@Link定义一个数组变量searchArr,点击搜索文本按钮时,将用户输入的内容即searchInput的值,通过数组的unshift()方法,在数组searchArr的头部添加数据。
// SearchInput.ets
@Component
export default struct SearchInput {@State searchInput: string = '';@Link searchArr: Array<string>;build() {Flex({ alignItems: ItemAlign.Center }) {// 搜索框布局Search({value: this.searchInput,placeholder: StyleConstants.SEARCH_PLACEHOLDER,icon: StyleConstants.SEARCH_ICON}).placeholderColor($r('app.color.placeholder_color')).placeholderFont({ size: $r('app.float.font_size') }).textFont({ size: $r('app.float.font_size') }).height(StyleConstants.SEARCH_HEIGHT).width(StyleConstants.SEARCH_WIDTH).backgroundColor(Color.White)....onChange((value: string) => {this.searchInput = value;})// 搜索文本按钮布局Text($r('app.string.search'))....onClick(() => {if (this.searchInput !== '' && this.searchInput.trim().length > 0) {// 使用unshift在数组头部添加数据this.searchArr.unshift(this.searchInput.trim());}this.searchInput = '';})}...}
}

然后我们在HomePage.ets首页中,引入SearchInput搜索输入框自定义组件。

  1. 使用@State定义数组变量searchArr,存放最近搜索文本内容。
  2. 在构造参数中,使用$符号引用@State修饰的变量searchArr,将父组件的变量searchArr与子组件searchArr变量关联起来。
// HomePage.ets
import SearchInput from '../view/SearchInput';@Entry
@Component
struct HomePage {@State searchArr: Array<string> = SearchViewModel.getSearchArrData();build() {Column() {// 搜索输入框自定义组件SearchInput({ searchArr: $searchArr })}...}
}

编写清除记录布局

在这个章节中,我们需要完成清除记录布局的编写,并实现条件渲染。效果如图所示:

在view目录下,点击鼠标右键 > New > ArkTS File,新建名为ClearSearch的ArkTS文件。然后在ClearSearch.ets文件中,逐步完成如下操作:

  1. 使用@Component新增一个自定义组件,组件名为ClearSearch。
  2. 在build()中使用Flex作为容器组件,实现子组件水平排列。
  3. 使用if/else实现条件渲染:当有搜索内容时,显示最近搜索的文本和清除搜索内容图标;否则就显示没有搜索内容和相关图片。
  4. 使用@Link定义数组变量searchArr,当点击清除搜索内容图标时,所有最近搜索内容清空。
// ClearSearch.ets
@Component
export default struct ClearSearch {// 搜索内容数组@Link searchArr: Array<string>;build() {Flex({ alignItems: ItemAlign.Center }) {if (this.searchArr.length > 0) {Text($r('app.string.recent_searches'))...Image($r('app.media.ic_delete'))....onClick(() => {this.searchArr.splice(0, this.searchArr.length);this.searchArr.length = 0;})} else {Column() {Image($r('app.media.ic_no_search'))...Text($r('app.string.no_search_content'))...}...}}}
}

然后我们在HomePage.ets首页中,引入ClearSearch搜索输入框自定义组件。

// HomePage.ets
import SearchInput from '../view/SearchInput';
import ClearSearch from '../view/ClearSearch';@Entry
@Component
struct HomePage {@State searchArr: Array<string> = SearchViewModel.getSearchArrData();build() {Column() {// 搜索输入框自定义组件SearchInput({ searchArr: $searchArr })// 清除搜索记录自定义组件ClearSearch({ searchArr: $searchArr })}...}
}

编写弹性布局

在这个章节中,我们需要完成弹性布局的功能样式,并实现循环渲染。效果如图所示:

在view目录下,点击鼠标右键 > New > ArkTS File,新建名为FlexLayout的ArkTS文件。然后在FlexLayout.ets文件中,逐步完成如下操作:

  1. 使用@Component新增一个自定义组件,组件名为FlexLayout。
  2. 在build()中使用Flex作为容器,设置参数wrap为FlexWrap.Wrap时为弹性布局,实现自动换行。
  3. 使用if实现条件渲染,当有搜索内容时,显示最近搜索的所有内容。
  4. 使用@Link定义数组变量searchArr,表示子组件要显示的所有最近搜索文本内容。
  5. 使用ForEach遍历变量searchArr,实现循环渲染。
// FlexLayout.ets
@Component
export default struct FlexLayout {@Link searchArr: Array<string>;build() {Scroll() {// Flex布局, wrap设置成FlexWrap.Wrap时为弹性布局Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap }) {if (this.searchArr.length > 0) {// 循环渲染		ForEach(this.searchArr, (item: string) => {Text(`${item}`)...}, (item: string) => JSON.stringify(item))}}...}}
}

然后我们在HomePage.ets首页中,引入FlexLayout搜索输入框自定义组件。

// HomePage.ets
import SearchInput from '../view/SearchInput';
import ClearSearch from '../view/ClearSearch';
import FlexLayout from '../view/FlexLayout';@Entry
@Component
struct HomePage {@State searchArr: Array<string> = SearchViewModel.getSearchArrData();build() {Column() {// 搜索输入框自定义组件SearchInput({ searchArr: $searchArr })// 清除搜索记录自定义组件ClearSearch({ searchArr: $searchArr })// 弹性布局自定义组件FlexLayout({ searchArr: $searchArr })}...}
}

总结

您已经完成了本次Codelab的学习,并了解到以下知识点:

  1. 使用Flex容器组件,实现弹性布局效果。
  2. 使用if/else实现条件渲染。
  3. 使用ForEach实现循环渲染。

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→《HarmonyOS教学视频》

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等.....视频教程

鸿蒙生态应用开发白皮书V2.0PDF:

获取完整版白皮书请点击→《鸿蒙生态应用开发白皮书V2.0PDF》

鸿蒙 (Harmony OS)开发学习手册

一、入门必看

  1. 应用开发导读(ArkTS)
  2. ……

二、HarmonyOS 概念

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全
  5. ........

三、如何快速入门?《做鸿蒙应用开发到底学习些啥?》

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

四、开发基础知识

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

五、基于ArkTS 开发

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙 (Harmony OS)开发学习手册》

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

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

相关文章

一则关于Go的高级构建指北

本文将探索Golang高级构建技巧&#xff0c;从而有助于创建更高效的二进制文件。 构建选项 以下是 go build 命令最常用的一些选项&#xff1a; -o: 指定输出文件名。默认输出文件名是主软件包的名称&#xff0c;在 Windows 系统中会自动添加 .exe 后缀。-v: 详细输出。该选项…

4、Cocos Creator 动画系统

目录 1、Clip 参数 2、动画编辑器 3、基本操作 更改时间轴缩放比例 移动显示区域 更改当前选中的时间轴节点 播放 / 暂停动画 修改 clip 属性 快捷键 4、模拟实验 5、动画事件 6、注意事项 参考 Animation 组件是节点上的一个组件。Clip 动画剪辑就是一份动画的声…

vue源码解析—— watch/computed的实现逻辑和区别

watch 和 computed 是 Vue 中的两个重要的响应式属性&#xff0c;它们在实现机制和使用上存在一些区别。 watch&#xff1a;用于监听数据的变化&#xff0c;并在数据变化时执行回调函数。可以使用 deep 配置项来开启深度监听&#xff0c;监听数据的子属性变化。可以使用 immedi…

基于51单片机和MAX1898的智能手机充电器设计

**单片机设计介绍&#xff0c;基于51单片机和MAX1898的智能手机充电器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机和MAX1898的智能手机充电器设计概要 一、引言 随着智能手机的普及&#xff0c;其电池续航…

网络安全接入认证-802.1X接入说明

介绍 802.1X是一个网络访问控制协议&#xff0c;它可以通过认证和授权来控制网络访问。它的基本原理是在网络交换机和认证服务器之间建立一个安全的通道&#xff0c;并要求客户端提供身份验证凭据。如果客户端提供的凭据是有效的&#xff0c;交换机将开启端口并允许访问。否则&…

通讯录改进———动态版本

在上一篇博客中讲完了动态内存分配&#xff0c;这时候我们就可以改进之前写的通讯录了&#xff0c;可以将其升级为动态内存的版本&#xff0c;既不用担心联系人满了&#xff0c;也不用担心内存浪费太大。 要将其改为动态版本主要是两件事&#xff0c;首先初始化的时候我们要动…

qt完成对话框提示

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//去掉头部this->setWindowFlag(Qt::FramelessWindowHint);//去掉空白this->setAttribute(Qt::WA_Transl…

Go的数据结构与实现【Queue】

介绍 与栈一样&#xff0c;队列也是最基本的数据结构之一。队列也是值的一种容器&#xff0c;其中值的插入和删除遵循“先进先出”&#xff08;First-In-First-Out, FIFO&#xff09;的原则⎯⎯也就是说&#xff0c;每次删除的只能是最先插入的值。 实现 队列的抽象数据类型…

《数据结构学习笔记---第六篇》---栈和队列的实现

目录 1.栈 1.1栈的概念及结构 1.2栈的实现 2.队列 2.1队列的概念及结构 ​2.2队列的实现 3.顺序栈的具体实现 3.1建头文Stack.h” 3.2创建具体接口实现文件Stack.c 3.2.1初始化 3.2.2入栈出栈 3.2.4判空 3.2.5栈的大小 3.2.6销毁栈 3.3主函数的实现 4.链队的具体实现…

SAMRTFORMS 转换PDF 发送邮件

最终成果&#xff1a; *&---------------------------------------------------------------------**& Report ZLC_FIND_EXIT*&---------------------------------------------------------------------**&根据T-CODE / 程序名查询出口、BADI增强*&-------…

2024年大广赛联通沃派命题解析:赛题内容一览

2024大广赛又又又又又出新命题了&#xff0c;它就是助力青少年积极向上&#xff0c;乐观自信&#xff0c;探享多彩人生的5G时代潮牌——联通沃派&#xff0c;让我们来看看命题详情吧&#xff01; 联联通沃派是中国联通面向青少年群体推出的客户品牌&#xff0c;契合目标群体特…

基于SSM框架的校园失物招领系统:从设计思路到实现细节

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

5.11 Vue配置Element UI框架

Vue配置Element UI框架 目录一、 概要二、 开发前准备1. 搭建Vue框架 三、 安装 Element UI1. 引入 Element UI 依赖2. 在 mian.js 中引入 Element UI 和相关样式&#xff1a;3. 按需引入(非必须, 可忽略)4. 简单构建一个主页面 目录 一、 概要 Element UI 是一个基于 Vue.js …

备考ICA----Istio实验13---使用 Istio Ingress 暴露应用

备考ICA----Istio实验13—使用Istio Ingress TLS暴露应用 1. 环境部署 清理之前实验遗留,并重新部署httpbin服务进行测试 # 清理之前的环境 kubectl delete vs httpbin kubectl delete gw mygateway # 部署httpbin kubectl apply -f istio/samples/httpbin/httpbin.yaml 确认…

vue3使用vuedraggable实现拖拽(有过渡)

1. 安装与使用 vue中vuedraggable安装&#xff1a; pnpm i -S vuedraggablenext或者 yarn add vuedraggablenext注意&#xff1a;vue2和vue3安装的是不同版本的vuedraggable&#xff0c;写法上也会有一些区别。 比如在vue3中使用拖拽&#xff0c;要以插槽的方式&#xff0c;…

【微服务】Sentinel(熔断降级,热点限流)

文章目录 1.熔断降级1.基本介绍1.线程堆积引出熔断降级2.示意图3.熔断&#xff0c;降级&#xff0c;限流三者之间的关系 2.熔断降级策略&#xff08;以分钟为基本单位&#xff09;1.慢调用比例2.异常比例3.异常数 3.熔断降级实例—慢调用比例1.需求分析2.com/sun/springcloud/c…

个人简历主页搭建系列-05:部署至 Github

前面只是本地成功部署网站&#xff0c;网站运行的时候我们可以通过 localhost: port 进行访问。不过其他人是无法访问我们本机部署的网站的。 接下来通过 Github Pages 服务把网站部署上去&#xff0c;这样大家都可以通过特定域名访问我的网站了&#xff01; 创建要部署的仓库…

CAS、AQS、ReentrantLock机制以原理

1、CAS 1.1 基本概念 CAS 是 compare and swap 的简写&#xff0c;即比较并交换。它是指一种操作机制&#xff0c;而不是某个具体的类或方法。在 Java 平台上对这种操作进行了包装。在 Unsafe 类中&#xff0c;调用代码如下 这里无法用Unsafe类看&#xff0c;我使用的是Atomi…

绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境

1、镜像 privoce/vocechat-server:latest 2、安装 2.1、基础设置 重启策略&#xff1a;容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、存储空间 装载路径&#xff1a;/home/vocechat-server/data不可变更&#xff0c;权限读写。 2.4、端口设置 容器端口3000不可变…

鸿蒙OS开发教学:【编程之重器-装饰器】

HarmonyOS 有19种装饰器 必须【2】 绘制一个页面&#xff0c;这两个肯定会用到 EntryComponent 可选【17】 StatePropLinkObjectLinkWatchStylesStoragePropStorageLinkProvideConsumeObservedBuilderBuilderParamLocalStoragePropLocalStorageLinkExtendConcurrent 如果…