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

【每日学点鸿蒙知识】子窗口方向、RichEdit不居中、本地资源缓存给web、Json转对象丢失方法、监听状态变量数组中内容改变

1、HarmonyOS 应用新建子窗口设置显示方向未生效?

子窗口getPreferredOrientation获取到的是横向 设置没问题,但是ui显示还是纵向的

直接设置主窗口的方向即可。参考demo:

import window from '@ohos.window';@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Row() {Column() {Text('反向横屏').fontSize(50).fontWeight(FontWeight.Bold).onClick(async ()=>{try {const topWindow = await window.getLastWindow(getContext(this));console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(topWindow));await topWindow.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED);console.info('Succeeded in setting window orientation.');} catch (error) {console.error('Failed to obtain or set the top window. Cause: ' + JSON.stringify(error));}/*window.getLastWindow(getContext(this),(err,win)=>{win.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED)})*/})Text("竖屏").fontSize(50).fontWeight(FontWeight.Bold).onClick(async ()=>{try {const topWindow = await window.getLastWindow(getContext(this));console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(topWindow));await topWindow.setPreferredOrientation(window.Orientation.PORTRAIT);console.info('Succeeded in setting window orientation.');} catch (error) {console.error('Failed to obtain or set the top window. Cause: ' + JSON.stringify(error));}/*window.getLastWindow(getContext(this),(err,win)=>{win.setPreferredOrientation(window.Orientation.PORTRAIT)})*/})}.width('100%')}.height('100%')}
}
2、HarmonyOS RichEditor 内容不居中显示?

参考代码:

RichEditor({ controller: this.controllerRich}).width('100%').height(40).layoutWeight(1).borderRadius(10).backgroundColor(Color.Red).margin({ top: 20 ,left:14,bottom:5}).key('RichEditor').id('id').placeholder('平台提倡文明用语,请温柔发言哦~',{font:{size:12},fontColor:'#999999'}).defaultFocus(true).onReady(() => {this.controllerRich.addTextSpan("0123456789\n", {style: {fontColor: Color.Pink,fontSize: "32",},paragraphStyle: {textAlign: TextAlign.Center,leadingMargin: 16}})})
3、HarmonyOS injectOfflineResources与precompileJavaScript区别?

相较于precompileJavaScript, injectOfflineResources也是指的把本地资源文件作为缓存给web使用吗?底层实现有区别吗?哪种性能会更好一些?

injectOfflineResources:将本地离线资源注入到内存缓存中,以提升页面首次启动速度;precompileJavaScript:预编译JavaScript生成字节码缓存或根据提供的参数更新已有的字节码缓存;这两个接口无论从用途、定义还是底层实现都完全是两个接口,前者是将资源注入到内存缓存,后者是将js编译成字节码缓存,性能上也没有可比性;参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#ZH-CN_TOPIC_0000001930676933__precompilejavascript12

4、HarmonyOS 在ArkTS中,想要将JSON 转为Class后,Class 中的function 方法丢失了?

语法问题,JSON.parse() 方法返回的是一个普通对象,而不是 DataBean 类的实例。不包含类定义的任何方法。需要在将 JSON 数据转换为 DataBean 实例时,手动创建类的实例,并将 JSON 对象的属性赋值给类的实例。参考:

class DataBean {code = -1;msg = '';isOK() {return this.code === 0;}// 静态方法,从 JSON 字符串创建 DataBean 实例static fromJson(jsonString: string): DataBean {const jsonData:ESObject = JSON.parse(jsonString);const dataBean = new DataBean();dataBean.code = jsonData.code;dataBean.msg = jsonData.msg;return dataBean;}
}let json = '{"code":0,"msg":"success"}';
let dataBean = DataBean.fromJson(json);
console.log("test",dataBean.msg); // success
console.log("test",dataBean.isOK()); // true,
5、HarmonyOS 使用@state装饰器,监听Array数组对象中的属性,如果不通过增删改的方式想监听属性,有没有最佳实践?

可以通过@Observed装饰器和@ObjectLink装饰器 嵌套类对象属性变化参考链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#%E5%AF%B9%E8%B1%A1%E6%95%B0%E7%BB%84

demo:

@Observed
class InnerMessageVo {id?: number;readState?: boolean;constructor(id: number, readState: boolean) {this.id = id;this.readState = readState;}
}@Component
struct ViweA {@ObjectLink a: InnerMessageVo;build() {Row() {Text(`${this.a.readState}`)}}
}@Entry
@Component
struct Index {@State arr1: InnerMessageVo[] = [new InnerMessageVo(1, false), new InnerMessageVo(2, false)]build() {Row() {Column() {List() {ForEach(this.arr1, (item: InnerMessageVo, index: number) => {ViweA({ a: this.arr1[index] })})ListItem() {Button('change').onClick(() => {console.log('false');this.arr1[1].readState = true})}}}.width('100%')}.height('100%')}
}

相关文章:

【每日学点鸿蒙知识】子窗口方向、RichEdit不居中、本地资源缓存给web、Json转对象丢失方法、监听状态变量数组中内容改变

1、HarmonyOS 应用新建子窗口设置显示方向未生效? 子窗口getPreferredOrientation获取到的是横向 设置没问题,但是ui显示还是纵向的 直接设置主窗口的方向即可。参考demo: import window from ohos.window;Entry Component struct Index {…...

【AI绘画】Midjourney前置指令/imagine与单图指令详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 | Midjourney 文章目录 💯Midjourney前置指令/imagine什么是前置指令?/imaginepromptUpscale(图像分离)Variations(变化)🔄&a…...

【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识

前言 在iOS开发中Keychain 是一个非常安全的存储系统,用于保存敏感信息,如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同,Keychain 提供了更高的安全性,因为它对数据进行了加密,并且只有经过授权的应用程序才…...

学习笔记 --C#基础其他知识点(数据结构)

C#中的数据结构《二》–视频学习笔记 在数据结构的分类: 1.集合 2.线性 3.树形 4.图状结构 数据结构是数据在程序中的存储结构,和基本的数据操作 算法:解决问题的解决思路,基于数据结构 本课程包括:线性表&#xff…...

AI与药学 | ChatGPT 在临床药学中的有效性以及人工智能在药物治疗管理中的作用

《Effectiveness of ChatGPT in clinical pharmacy and the role of artificial intelligence in medication therapy management》这篇文献研究了ChatGPT在临床药学,特别是在药物治疗管理(MTM)中的有效性。 一、研究背景 (Background) MTM …...

Streamlining QA with Automated Testing for 3D Models

Quality assurance testing in 3D modeling is like walking a tightrope. Balancing the need for detailed accuracy and the time it takes to achieve it is no small feat. But what if we could make the tightrope wider, the task less daunting? And it’s where aut…...

产品原型设计

🤣🤣目录🤣🤣 一、Axure原型设计(Axure RP 9 )1.1 软件下载安装1.2 产品原型展示1.3 产品原型下载1.4 视频课程推荐 二、磨刀原型设计2.1 软件下载安装2.2 产品原型展示2.3 产品原型下载2.4 视频课程推荐 什…...

【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别

su 命令 su (Switch User 切换用户),允许用户切换到另一个用户的身份,默认情况下是切换到 root 用户。 默认行为:如果只运行 su,则系统会要求输入 root 用户的密码来切换到 root 用户,获取管理员权限。 切换到其他用…...

【广州计算机学会、广州互联网协会联合主办 | ACM独立出版 | 高录用】第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)

第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)定于2025年01月10-12日在中国广州举行。会议旨在为从事“大数据”、“计算机网络”与“信息”研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发…...

HTML5 开关(Toggle Switch)详细讲解

HTML5 开关(Toggle Switch)详细讲解 1. 任务概述 开关(Toggle Switch)是一种用于表示二元状态(如开/关)的用户界面控件。用户可以通过点击开关来切换状态,常见于设置选项、开关功能等场景。 2…...

win32汇编环境下,双击窗口程序内生成的listview列表控件的某行,并提取其内容的示例程序

;运行效果 ;双击后 ;上源码,仔细研究里面的几条备注就理解原理了 ;提取窗口程序内生成的listview列表控件的内容示例程序 ;抄下面源码,可以在radasm里面直接编译运行。主要的部分加了备注。 ;>>>>>>>>>>>>>>…...

mysql主从断开后问题排查及修复

服务器mysql主从同步断开后,进行主从恢复 问题:mysql的主从断开了,在从服务器上通过以下命令查看状态,发现Slave_SQL_Running为No SHOW SLAVE STATUS\G;Slave_IO_Running:表示从服务器读取主服务器日志的线程 Slave_…...

[2025] 如何在 Windows 计算机上轻松越狱 IOS 设备

笔记 1. 首次启动越狱工具时,会提示您安装驱动程序。单击“是”确认安装,然后再次运行越狱工具。 2. 对于Apple 6s-7P和iPad系列(iOS14.4及以上),您应该点击“Optinos”并勾选“允许未经测试的iOS/iPadOS/tvOS版本”&…...

计算机网络—————考研复试

第一章、计算机网络体系结构 1. OSI参考模型和TCP/IP模型: OSI与TCP/IP的记忆方法:只需把OSI的七层记住,将应用层、表示层、会话层一起记,到TCP/IP变成应用层。物理层和数据链路层换成网络接口层。把网络层换个字变成网际层。 而…...

[pdf、epub]260道《软件方法》强化自测题业务建模需求分析共216页(202412更新)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 260道《软件方法》强化自测题业务建模需求分析共216页(202412更新) 已上传到本CSDN账号的资源 如果下载不到,也可以访问以下链接: ht…...

LeetCode - 初级算法 数组(只出现一次的数字)

只出现一次的数字 这篇文章讨论如何找到一个数组中只出现一次的数字,确保算法的时间复杂度为线性,且只使用常量额外空间。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个非空整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两…...

Android性能优化概述

应用启动速度慢页面加载慢交互卡顿CrashANR 针对这些问题,可以逐一进行优化 1.启动优化 Android应用启动分为冷启动和热启动以及初次安装启动,此处只分析冷启动及热启动 冷启动:当设备无该应用进程时,用户操作拉起应用&#xff…...

C++ 实现map容器从大到小排序

map容器默认从小到大排序 利用仿函数可以修改map容器的排序规则为从大到小 示例&#xff1a; #include<iostream> #include<string> #include<map> using namespace std; class MyCompare { public: bool operator()(const int v1, const int v2) co…...

java中的文件操作

基础知识 1.File类对象的常用方法 一、 创建文件和目录 1.createNewFile() 用于创建一个新的文件&#xff0c;如果文件已经存在&#xff0c;则返回 false File file new File("C:\\Users\\P51\\Desktop\\file.txt"); file.createNewFile(); 2.mkdir() 用于创建一个…...

修复OpenHarmony系统相机应用横屏拍照按钮点不到的问题

适配OpenHarmony系统相机应用横屏UI&#xff0c; 相关pr: https://gitee.com/openharmony/applications_camera/pulls/233/files 适配效果 如何安装 编译好的hap提供在附件中 1.预置在源码&#xff0c;随固件安装 2.安装hap hdc shell "mount -o remount,rw /"…...

告别手动Excel!用Plink 1.9快速搞定GWAS数据杂合度分析(附实战代码)

群体遗传学实战&#xff1a;用Plink高效完成GWAS数据杂合度分析 在生物信息学研究中&#xff0c;杂合度分析是评估基因型数据质量的重要环节。传统手动Excel处理方式不仅耗时耗力&#xff0c;还容易引入人为错误。本文将详细介绍如何利用Plink 1.9这一专业工具&#xff0c;快速…...

python学习笔记 | 11.2、面向对象高级编程-使用@property

一、先搞懂&#xff1a;我们为什么要用 property&#xff1f; 1. 原始问题 直接给对象赋值&#xff0c;没法检查数据是否合法&#xff1a; class Student:passs Student() s.score 9999 # 成绩不可能是9999&#xff0c;完全不合理&#xff01;2. 笨办法解决&#xff08;太麻…...

甲级钢制隔热平开防火窗:技术参数、结构工艺与工程应用解析

一、产品概述甲级钢制隔热平开防火窗严格依照国家消防标准制造&#xff0c;采用加厚冷轧镀锌钢板打造框架&#xff0c;搭配防火填充材料、隔热防火玻璃与专用密封配件&#xff0c;防火隔热、密闭性强&#xff0c;耐用抗腐蚀。相较于低等级防火窗&#xff0c;本品耐火隔热性能更…...

Claude Code 配置手册

验证已经安装node和npmnode -v npm -v如果显示版本号且 ≥ 18.0.0&#xff0c;则说明安装成功安装CLInpm i -g anthropic-ai/claude-codelatest npm i -g openai/codexlatest npm i -g google/gemini-clilatest根目录下新建 settings.json 配置文件vim ~/.claude/settings.json…...

TLV320AIC3254音频编解码器:核心架构、配置实战与典型应用

1. 项目概述&#xff1a;从一颗“全能”音频芯片说起最近在做一个需要高保真音频采集和处理的嵌入式项目&#xff0c;选型时又一次把目光投向了TI的TLV320AIC3254。这颗芯片在音频工程师的圈子里名气不小&#xff0c;常被戏称为“音频界的瑞士军刀”。它本质上是一颗超低功耗的…...

taotoken用量看板如何帮助项目管理者精细化追踪api成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken用量看板如何帮助项目管理者精细化追踪api成本 对于依赖大模型API进行开发的项目团队而言&#xff0c;成本控制始终是一个…...

从概率图到优化问题:信息矩阵、Hessian矩阵与协方差矩阵的内在统一

1. 概率图模型中的信息矩阵与协方差矩阵 我第一次接触信息矩阵是在做视觉SLAM项目时&#xff0c;当时被一堆矩阵运算绕得头晕。后来才发现&#xff0c;理解它们的关系就像拼乐高——每个零件都有明确的位置和作用。让我们从一个简单的因子图例子开始&#xff0c;看看这些矩阵如…...

基于VSCode Remote-SSH的嵌入式Linux开发环境配置与实战

1. 嵌入式开发流程的痛点与优化思路 作为一名在嵌入式行业摸爬滚打了十多年的老工程师&#xff0c;我太清楚传统开发流程里那些让人头疼的环节了。我们最熟悉的模式&#xff0c;就是在PC上写好代码&#xff0c;用交叉编译工具链生成目标板&#xff08;比如ARM架构的开发板&…...

cstore_fdw深度解析:列投影与跳读索引如何实现6倍查询加速

cstore_fdw深度解析&#xff1a;列投影与跳读索引如何实现6倍查询加速 【免费下载链接】cstore_fdw Columnar storage extension for Postgres built as a foreign data wrapper. Check out https://github.com/citusdata/citus for a modernized columnar storage implementat…...

AI为笔,书写更高效的校招流程

数字化工具如何把HR从简历海中拯救出来&#xff1f;当春招的巨浪袭来&#xff0c;HR们往往陷入了简历的“深水区”。数以千计的简历涌入后台&#xff0c;不仅有校招实习的投递&#xff0c;还有各种零散的咨询。如果依然依靠纯人工、传统的方式进行处理&#xff0c;不仅效率低&a…...