当前位置: 首页 > news >正文

HarmonyOS开发(五):常用基础组件

1、组件介绍

组件(Component),是界面搭建及显示的最小单元。

组件根据功能可以分为五大类:基础组件、容器组件、媒体组件、绘制组件、画布组件

2、基础组件

基础组件是视图层的基本组成单元,它包含:Text、Image、TextInput、Button、LoadingProgress……

2.1、Text

Text组件可以在界面上展示一段文本信息,它可以包含子组件Span。

对于包含文本文本元素的组件(如:Text,Span,Button,TextInput……)可以使用fontSize(),fontColor(),fontWeight(),fontFamily(),fontStyle()这些文本样式设置文本的大小、颜色、粗细、字体等信息。

名称参数类型描述
fontColorResourceColor设置文本颜色
fontSizeLength | Resource设置文本尺寸,Length为number类型时,使用fp单位
fontStyleFontStyle设置文本的字体样式、默认值:FontStyle.Normal
fontWeightnumber | FontWeight| string

设置文本字体的粗细

number取值是[400,900],间隔是100,值越大越粗

string类型仅支持number类型取值的字符串形式,例如“400”,以及“bold”、“bolder”、“lighter”、“regular”、“medium”,分别对应FontWeight中相应的枚举值。

默认值:FontWeight.Normal

fontFamilystring | Resource  设置文本的字体列表。使用多个字体,使用“,”进行分割,优先级按顺序生效。例如:“Arial,sans-serif

2.1.1、通用属性与文本样式设置

@Entry
@Component
struct Index {build() {Row() {Column() {Text('Harmony OS').margin({bottom:15})Text('鸿蒙系统').fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial')}.width('100%')}.backgroundColor(0xF1F3F5).height('100%')}
}

2.1.2、文本对齐方式设置

@Entry
@Component
struct Index {build() {Row() {Column() {Text('Harmony OS').margin({bottom:15}).width(200).height(50).textAlign(TextAlign.Start)    // 对齐方式.backgroundColor(0xE6F2FD)Text('鸿蒙系统').fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial')}.width('100%')}.backgroundColor(0xF1F3F5).height('100%')}
}

textAlign参数类型为TextAlign,定义了几种类型

  • Start:默认值,水平对齐首部
  • Center:水平居中对齐
  • End:水平对齐尾部

2.1.3、设置文本超长显示

当文本的内容过多超出了Text组件范围时,可以使用textOverflow设置文本截取方式,配合maxLines使用,单独设置不生效

maxLines用来设置文本显示的最大行数

如果把textOverflow设置为Ellipsis,那么它会把显示不下的文本使用“...”表示

@Entry
@Component
struct Index {build() {Row() {Column() {Text('Harmony OS').margin({bottom:15}).width(200).height(50).textAlign(TextAlign.Start).backgroundColor(0xE6F2FD)Text('鸿蒙系统').fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial').margin({bottom:15})Text('滨海昌正企业管理有限公司成立于2011年,主要从事母婴行业品牌开发与销售,是集产品研发、品牌运营、销售服务及物流供应链为一体的公司。现有团队人数800人,其中管理人员100+人。').fontSize(18)// 文本超长显示设置使用textOverflow配合maxLines一起使用.maxLines(1).textOverflow({overflow: TextOverflow.Ellipsis}).backgroundColor(0xE6F2FD)}.width('100%')}.backgroundColor(0xF1F3F5).height('100%')}
}

2.1.4、设置文本装饰线

使用decoration设置文本的装饰线样式及其颜色

它包含两个参数:type用来指定装饰线的样式,其参数类型是TextDecorationType;color用来指定装饰线的颜色,其参数类型是Color,它是一个可选参数。

@Entry
@Component
struct Index {build() {Row() {Column() {Text('Harmony OS').margin({bottom:15}).width(200).height(50).textAlign(TextAlign.Start) // 设置文本对齐方式.backgroundColor(0xE6F2FD).fontSize(20).decoration({type: TextDecorationType.Underline, color: Color.Black}) // 设置文本装饰线Text('鸿蒙系统').fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial').margin({bottom:15})Text('滨海昌正企业管理有限公司成立于2011年,主要从事母婴行业品牌开发与销售,是集产品研发、品牌运营、销售服务及物流供应链为一体的公司。现有团队人数800人,其中管理人员100+人。').fontSize(18)// 超长文本使用textOverflow与maxLines配合设置.maxLines(1).textOverflow({overflow: TextOverflow.Ellipsis}).backgroundColor(0xE6F2FD)}.width('100%')}.backgroundColor(0xF1F3F5).height('100%')}
}

TexDecorationType包含以下几种类型:

  • None:表示不使用装饰线
  • Overline:表示使用上划线装饰
  • LineThrough:表示使用删除线来装饰
  • Underline:表示使用下划线装饰

2.2、Image

Image组件用来渲染展示图片,只需要给定图片地址、宽和高,图片就可以加载出来

@Entry
@Component
struct Test {build() {Row() {Column() {Image($r("app.media.icon")).width(100).height(100)}.width('100%')}.height('100%')}
}

2.2.1、设置图片的缩放类型

图片资源放在项目的:src/main/resources/base/media 目录

为了使用图片在页面中有更好的显示效果,有时候需要对图片进行缩放处理。

可以使用objectFit属性来设置图片的缩放类型,其参数的类型是ImageFit。

@Entry
@Component
struct Test {build() {Row() {Column() {Image($r("app.media.image")).objectFit(ImageFit.Cover) // 默认的缩放方式.width(200).height(300).backgroundColor(0xCCCCCC)}.width('100%')}.height('100%')}
}

ImageFit包含如下几种类型:

  • Contain:保持宽高比进行缩小或放大,使用得图片完全显示在显示边界中
  • Cover:默认值,保持宽高比进行缩小或放大,使得图边两边都大于或等于显示边界
  • Auto:自适应显示
  • Fill:不保持宽高比进行放大或缩小,使用图片充满显示边界
  • ScaleDown:保持宽高比显示,图片缩小或者保持不变
  • None:保持原极尺寸显示

2.2.2、加载网络图片

如果需要加载网络图片需要在module.json5中申请网络访问权限

{"module" : {"requestPermissions":[{"name": "ohos.permission.INTERNET"}]}
}
@Entry
@Component
struct Test {build() {Row() {Column() {Image($r("app.media.image")).objectFit(ImageFit.Contain) // 默认的缩放方式.width(200).height(300).backgroundColor(0xCCCCCC).margin({bottom:15})// 加载网图图片Image('https://p1.itc.cn/q_70/images03/20210217/d74ec9f0a1dc431a87c5cb4742ee17b1.jpeg').width(200).height(200)}.width('100%')}.height('100%')}
}

2.3、TextInput

TextInput组件用来输入单行文本,响应输入事件。

@Entry
@Component
struct TextInputTest {build() {Row() {Column() {TextInput().fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial')}.width('100%')}.height('100%')}
}

与Text组件一样,也支持文本样式的设置。

2.3.1、设置输入提示语

要在输入框中添加提示语可以使用placeholder属性来实现,同时还可以使用placeholderColor和placeholderFont来分别设置提示文本的颜色和样式。

@Entry
@Component
struct TextInputTest {build() {Row() {Column() {TextInput().fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial').margin({bottom: 15})TextInput({placeholder: '请输入账号'}).placeholderColor(0x999999).placeholderFont({size: 20, weight: FontWeight.Medium, family: 'cursive', style: FontStyle.Italic})}.width('100%')}.height('100%')}
}

2.3.2、设置输入类型

可以使用type属性来设置输入框类型。其类型是InputType

@Entry
@Component
struct TextInputTest {build() {Row() {Column() {TextInput().fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial').margin({bottom: 15})TextInput({placeholder: '请输入账号'}).placeholderColor(0x999999).placeholderFont({size: 20, weight: FontWeight.Medium, family: 'cursive', style: FontStyle.Italic}).margin({bottom: 15})TextInput({placeholder: '请输入密码'}).type(InputType.Password) // 指定输入的类型}.width('100%')}.height('100%')}
}

InputType包含以下几种输入类型:

  • Normal:基本输入模式。支持输入数字、字母、下划线、空格、特殊字符
  • Password:密码输入模式
  • Email:e-mail地址输入模式
  • Number:纯数字输入模式

2.3.3、设置光标的位置

@Entry
@Component
struct TextInputTest {controller: TextInputController = new TextInputController();build() {Row() {Column() {TextInput().fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial').margin({bottom: 15})TextInput({placeholder: '请输入账号'}).placeholderColor(0x999999).placeholderFont({size: 20, weight: FontWeight.Medium, family: 'cursive', style: FontStyle.Italic}).margin({bottom: 15})TextInput({placeholder: '请输入密码'}).type(InputType.Password) // 指定输入的类型.margin({bottom: 15})TextInput({controller: this.controller}).margin({bottom: 15})Button('设置光标的位置').onClick(() => {this.controller.caretPosition(2)  // 设置光标的位置在第二个字符之后})}.width('100%')}.height('100%')}
}

上面使用了TextInputColler的caretPosition方法来设置光标所在的位置。

2.3.4、获取输入文本

可以给TextInput设置onChange事件,输入文本发生变化时触发回调,从而拿到输入框中的文本信息。

@Entry
@Component
struct TextInputTest {controller: TextInputController = new TextInputController();@State username: string = ''; // 保存用户输入的账号build() {Row() {Column() {TextInput().fontColor(Color.Blue).fontSize(20).fontStyle(FontStyle.Italic).fontWeight(FontWeight.Bold).fontFamily('Arial').margin({bottom: 15})TextInput({placeholder: '请输入账号'}).placeholderColor(0x999999).placeholderFont({size: 20, weight: FontWeight.Medium, family: 'cursive', style: FontStyle.Italic}).margin({bottom: 15})TextInput({placeholder: '请输入密码'}).type(InputType.Password) // 指定输入的类型.margin({bottom: 15})TextInput({controller: this.controller}).margin({bottom: 15})Button('设置光标的位置').onClick(() => {this.controller.caretPosition(2)  // 设置光标的位置在第二个字符之后}).margin({bottom: 15})TextInput({placeholder: 'username'}).caretColor(Color.Blue) // 光标的颜色.onChange((value: string) => {this.username = value;}).margin({bottom: 15})Text(this.username)}.width('100%')}.height('100%')}
}

2.4、Button

Button组件主要用来响应点击操作,可以包含子组件。

@Entry
@Component
struct ButtonTest {build() {Row() {Column() {Button('登录',{type: ButtonType.Capsule, stateEffect: true}).width('90%').height(40).fontSize(16).fontWeight(FontWeight.Medium).backgroundColor('#007DFF')}.width('100%')}.height('100%')}
}

2.4.1、按钮样式

type用来定义按钮的样式,其类型是ButtonType

stateEffect用于设置按钮按下时是否开启切换效果,当状态为false时,点击效果关闭,默认值为true

type的样式可以有如下:

  • Capsule:胶囊型按钮(圆角默认是高度的一半)
  • Circle:圆形按钮
  • Normal:普通按钮(默认,不带圆角)

2.4.2、按钮点击事件

可以给Button绑定onClick事件,当用户点击Button的时候,则会执行onClick方法,调用其中的逻辑代码。

@Entry
@Component
struct ButtonTest {@State text: string = '';@State isShow: boolean = false;build() {Row() {Column() {TextInput({placeholder:'请输入内容'}).margin({bottom: 15}).onChange((value: string) => {this.isShow = false;this.text = value;})Button('登录',{type: ButtonType.Capsule, stateEffect: true}).width('90%').height(40).fontSize(16).fontWeight(FontWeight.Medium).backgroundColor('#007DFF').margin({bottom: 15}).onClick(() => {  // 绑定按钮点击事件this.isShow = !this.isShow;})if(this.isShow) {Text(this.text);}}.width('100%')}.height('100%')}
}

2.4.3、包含子组件按钮

@Entry
@Component
struct ButtonTest {@State text: string = '';@State isShow: boolean = false;build() {Row() {Column() {TextInput({placeholder:'请输入内容'}).margin({bottom: 15}).onChange((value: string) => {this.isShow = false;this.text = value;})Button('登录',{type: ButtonType.Capsule, stateEffect: true}).width('90%').height(40).fontSize(16).fontWeight(FontWeight.Medium).backgroundColor('#007DFF').margin({bottom: 15}).onClick(() => {  // 绑定按钮点击事件this.isShow = !this.isShow;})if(this.isShow) {Text(this.text).margin({bottom: 15})}Button({type: ButtonType.Circle, stateEffect: true}) {// 子组件,在其中放置一个图片Image($r('app.media.delete')).width(32).height(32)}.width(64).height(64).backgroundColor(0x317aff)}.width('100%')}.height('100%')}
}

2.5、LoadingProgress

这个组件用来显示加载进度。

@Entry
@Component
struct LoadingTest {build() {Row() {Column() {LoadingProgress().color(Color.Blue).height(64).width(64)}.width('100%')}.height('100%')}
}

3、资源引用

Resource是资源引用类型,用于设置组件属性的值。

资源文件(字符串、图片、音频……)统一存放在resources目录下。

开发者可以根据屏幕尺寸呈现不同的局效果,根据语言不同使用不同的字符串。

@Entry
@Component
struct ResourceTest {build() {Row() {Column() {Button('登录', {type: ButtonType.Capsule, stateEffect: true}).width(300).height(40).fontSize(16).fontWeight(FontWeight.Medium).backgroundColor('#007DFF')}.width('100%')}.height('100%')}
}

上面的按钮则是写死的,我们可以把相应的资源存放在对应的资源文件中

资源文件的目录:entry/src/main/resources
string.json用来存放字符串资源

{"string": [{"name": "login_text","value": "登录"}]
}

同时对于字符串资源需要在en_US,zh_CN目录下对应加上这个login_text键对应的值

en_US目录下的string.json

{"string": [{"name": "login_text","value": "login"}]
}

zh_CN目录下的string.json

{"string": [{"name": "login_text","value": "登录"}]
}

在float.json中新增如下键值对

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

在color.json中新增一个键button_color

{"color": [{"name": "start_window_background","value": "#FFFFFF"},{"name": "button_color","value": "#1890ff"}]
}

配置了上面这些资源后,在使用时就中以以$r('app.type.name')的形式引用应用资源。

type代表资源的类型(或者是资源的存放位置)可以取值是:color,float,string,plural,media

name代表资源的命名

通过引用资源代码可以修改为如下:

@Entry
@Component
struct ResourceTest {build() {Row() {Column() {Button($r('app.string.login_text'), {type: ButtonType.Capsule, stateEffect: true}).width($r('app.float.button_width')).height($r('app.float.button_height')).fontSize($r('app.float.login_fontSize')).fontWeight(FontWeight.Medium).backgroundColor($r('app.color.button_color'))}.width('100%')}.height('100%')}
}

相关文章:

HarmonyOS开发(五):常用基础组件

1、组件介绍 组件(Component),是界面搭建及显示的最小单元。 组件根据功能可以分为五大类:基础组件、容器组件、媒体组件、绘制组件、画布组件 2、基础组件 基础组件是视图层的基本组成单元,它包含:Text、Image、T…...

Hive中常出现的错误(不定时更新)

1.加载数据失败 hive> load data local inpath /home/user/hive.txt into table studentl> ; FAILED: SemanticException [Error 10001]: Line 1:56 Table not found studentl hive> load data local inpath /home/user/hive.txt into table student; Loading data to…...

c++ 重写 多态

1 重写(继承后(拼接基类后)) 1.1 非虚函数 同名成员函数 (各自有一个xFunction() 内存 ) #include <iostream> #include <String> class BaseClass { public:void xFunction() {std::cout << "BaseClass::xFunction()\n"; } };class Subclass1 …...

Git如何修改提交(commit)用户名称(user.name)和邮箱(user.email)

Git用户名 Git查看用户名 git config user.name修改Git提交用户名 修改全局Git用户名 git config --global user.name "xx" 修改当前服务/项目Git用户名 git config user.name "xx"如果出现以下错误&#xff0c;解决方案如下&#xff1a; 错误案例&am…...

知行之桥EDI系统HTTP签名验证

本文简要概述如何在知行之桥EDI系统中使用 HTTP 签名身份验证&#xff0c;并将使用 CyberSource 作为该集成的示例。 API 概述 首字母缩略词 API 代表“应用程序编程接口”。这听起来可能很复杂&#xff0c;但真正归结为 API 是一种允许两个不同实体相互通信的软件。自开发以…...

C++ DAY08 异常

概念 异常事件&#xff08;如&#xff1a;除 0 溢出&#xff0c;数组下标越界&#xff0c;所要读取的文件不存在 , 空指针&#xff0c;内存不足 等等&#xff09; 在 C 语言对错误的处理是两种方法&#xff1a; 一是使用整型的返回值标识错误&#xff1b; 二是使用 errn…...

vscode导入STM32CubeIDE工程文件夹未定义警告清除方法

0 前言 在我们使用vscode去编辑STM32CubeIDE的工程文件时&#xff0c;经常会出现一些类型未定义、头文件路径无效的问题&#xff0c;无法正常使用且非常影响观感。本文介绍如何设置vscode导入的STM32CubeIDE配置文件&#xff0c;解决这一问题。 1 vscode导入STM32CubeIDE工程…...

SparkSQL之Optimized LogicalPlan生成过程

经过Analyzer的处理&#xff0c;Unresolved LogicalPlan已经解析成为Analyzed LogicalPlan。Analyzed LogicalPlan中自底向上节点分别对应Relation、Subquery、Filter和Project算子。   Analyzed LogicalPlan基本上是根据Unresolved LogicalPlan一对一转换过来的&#xff0c;…...

Java中有几种基本数据类型以及转换方式【Java面经(1)】

问&#xff1a;Java中有几种基本数据类型呢&#xff1f;以及它们之间的转换方式。详细介绍下 总共有8种基本数据类型 byte 、short 、long 、float 、double 、boolean 、char 详细类型以及字节数&#xff1a; 基本数据类型的转换方式 自动类型转换&#xff1a;小–>大 byt…...

JVM虚拟机:JVM调优第一步,了解JVM常用命令行参数

本文重点 从本文课程开始&#xff0c;我们将用几篇文章来介绍JVM中常用的命令行的参数&#xff0c;这个非常重要&#xff0c;第一我们可以通过参数了解JVM的配置&#xff0c;第二我们可以通过参数完成对JVM的调参。以及后面的JVM的调优也需要用到这些参数&#xff0c;所以我们…...

CSS特效019:图标图片悬浮旋转一周

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…...

requests请求django接口跨域问题处理

参考&#xff1a; https://zhuanlan.zhihu.com/p/416978320 https://blog.csdn.net/SweetHeartHuaZai/article/details/130983179 使用httpx代替requests import httpxheaders {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3…...

#Js篇:Promise

定义 Promise是异步操作解决方案&#xff0c;为异步操作提供统一接口。 Promise英文意思是“承诺”&#xff0c;表示其他手段无法改变。 返回 所有异步任务都返回一个Promise实例。 Promise实例有一个then方法&#xff0c;用于指定下一步的回调函数。 状态 异步操作未完…...

【数据库篇】关系模式的表示——(2)规范化

范式&#xff1a;范式是符合某一种级别的关系模式的集合 规范化&#xff1a;是指一个低一级的范式的关系模式&#xff0c;通过模式的分解转换为若干个高一级范式的关系模式的集合。 1NF 每个分量必须是不可分开的数据项&#xff0c;满足这个条件的关系模式就是1NF。 2NF 若…...

【C++那些事儿】类与对象(3)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我之前看过一套书叫做《明朝那些事儿》&#xff0c;把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言&#xff0c;无疑是抽象且难度颇…...

spark的算子

spark的算子 1.spark的单Value算子 Spark中的单Value算子是指对一个RDD中的每个元素进行操作&#xff0c;并返回一个新的RDD。下面详细介绍一些常用的单Value算子及其功能&#xff1a; map&#xff1a;逐条映射&#xff0c;将RDD中的每个元素通过指定的函数转换成另一个值&am…...

【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷7

1、一袋小球中有15个白球&#xff0c;3个红球和2个黑球。在随机从袋子中拿出至少&#xff08;&#xff09;个小球后&#xff0c;才可以保证至少拿出了5个白球 A、5 B、10 C、8 D、15 答案&#xff1a;B 2、以下选项中&#xff0c;数值最接近十进制数114的是&#xff08; &…...

MySQL MHA高可用架构搭建

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解&#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见&#xff0c;博主会及时修改&#xff09; MySQL MHA高可用架构搭建 MHA&#xff08;Master HA&#xff09;是一款开源的 MySQL 的高可用程序&#xf…...

UE小计:顶部工具栏按钮添加下拉列表,大纲列表、资源管理窗口右键添加按键

下拉列表 void FYouPluginsModule::StartupModule() {FYouToolStyle::Initialize();FYouToolStyle::ReloadTextures();FYouToolCommands::Register();PluginCommands MakeShareable(new FUICommandList);PluginCommands->MapAction(FYouToolCommands::Get().PackByCloudAc…...

git stash 用法总结

目录 1&#xff0c;介绍场景1&#xff1a;场景2&#xff1a; 2&#xff0c;常用命令2.1&#xff0c;基础2.2&#xff0c;进阶1&#xff0c;存储时指定备注2&#xff0c;通过索引来操作指定的存储3&#xff0c;修改存储规则 2.3&#xff0c;查看 stash 修改的具体内容 1&#xf…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...