【每日学点鸿蒙知识】渐变效果、Web组件注册对象报错、深拷贝list、loadContent数据共享、半屏弹窗

devtools/2025/1/8 2:23:20/
1、HarmonyOS 有没有类似于渐变效果?

实现渐变的方式请参考以下代码:

@Entry
@Component
struct Page240126155113078 {@State message: string = 'Hello World';build() {Row() {Column() {Row() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN)}.linearGradient({direction: GradientDirection.Right,colors: [[0x000000, 0.0], [0xffffff, 1.0]]}).blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)}.width('100%')}.height('100%')}
}经过测试以下代码与 提供的截图效果差别不大,那边显示的效果有差异,以下是示例代码:@Entry
@Component
struct Page240126155113078 {@State message: string = '文化莞';build() {Row() {Column() {Row() {Text(this.message).fontSize(20).fontWeight(FontWeight.Bold).blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN)}.linearGradient({direction: GradientDirection.Right,colors: [[0x000000, 0.0], [0xffffff, 0.8]]}).blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)}// .backgroundColor(Color.Blue).width('100%')}.height('100%')}
}
按照 的描述,现提供以下参考代码:
@Entry
@Component
struct ListExample {@State arr: string[] = ['影视', '生活', '军事','历史', '小说', '电影', '揭秘', '明星', '社会', '大爆炸','好看','精选']private scroller: Scroller = new Scroller();build() {Stack() {List({ space: 10 }) {ForEach(this.arr, (item: string) => {ListItem() {Text(item).width(50).height(64).fontColor(Color.Black).backgroundColor(Color.White).textAlign(TextAlign.Center)}}, (item: string) => item);}.listDirection(Axis.Horizontal).scrollBar(BarState.Off).padding({ top: 20, bottom: 20 }).width("80%").height("100%")Stack() {}.linearGradient({angle: 90,colors: [ ['rgba(255,255,255,0)', 0.9], [0xffffff, 1.0]]}).width("80%").height("100%").hitTestBehavior(HitTestMode.None)}.height(100).width('100%').backgroundColor(Color.White)}
}
2、HarmonyOS Web组件注册对象时,对象声明报ArkTS-no-untyped-obj-literals?

ArkTS-no-untyped-obj-literals的错误可以参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/arkts-more-cases.md#arkts-no-untyped-obj-literals

从SDK中导入类型,标注object literal类型

应用代码

const area = {pixels: new ArrayBuffer(8),offset: 0,stride: 8,region: { size: { height: 1,width:2 }, x: 0, y: 0 }
}

建议改法

import { image } from '@kit.ImageKit';const area: image.PositionArea = {pixels: new ArrayBuffer(8),offset: 0,stride: 8,region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
}
list_127">3、HarmonyOS 深拷贝关于list类型如何处理?

目前ArkTS不支持any类型,没办法在ets中写深拷贝逻辑,但是在ts文件中写深拷贝时,list数据类型又不支持,如何处理

参考:

function deepCopy(obj: ESObject): ESObject {if (typeof obj !== "object" || obj === null) {return obj;}let copy: ESObject;if (Array.isArray(obj)) {copy = [];for (let i = 0; i < obj.length; i++) {copy[i] = deepCopy(obj[i]);}} else {copy = {};for (let i = 0; i < obj.length(); i++) {let key:ESObject=obj[i];if (obj.hasOwnProperty(key)) {copy[key] = deepCopy(obj[key]);}}}return copy;
}
let arr1:Array<number> = new Array<number>(1, 2, 3);
let arr2:Array<number> = deepCopy(arr1);
arr2[2] = 4;console.log('arr1: '+String(arr1));
console.log('arr2: '+String(arr2));
4、HarmonyOS entryAbility如何和他的loadContent的Page进行数据的共享呢?

可以尝试使用LocalStorage来解决问题。LocalStorage loadcontent文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#loadcontent9

loadContent(path: string, storage: LocalStorage, callback: AsyncCallback<void>): void

根据当前工程中某个页面的路径为窗口加载具体页面内容,通过LocalStorage传递状态属性给加载的页面,使用callback异步回调。
参数:

参数名类型必填说明
pathstring要加载到窗口中的页面内容的路径,该路径需添加到工程的main_pages.json文件中。
storageLocalStorage页面级UI状态存储单元,这里用于为加载到窗口的页面内容传递状态属性。
callbackAsyncCallback<void>回调函数。
5、HarmonyOS CustomDialogController如何弹出半屏弹窗?

CustomDialogController如何弹出半屏弹窗使得弹窗内容未覆盖的区域仍然可以响应用户操作。

  1. 可以设置 弹窗遮蔽层区域,在遮蔽层区域内的事件不透传,在遮蔽层区域外的事件透传。
  2. 可以将弹窗组件的蒙层属性isModal设为false,自定义蒙层并通过Visibility控制显隐,使用hitTestBehavior(HitTestMode.None)可以实现自身不响应触摸测试。

样例demo

@CustomDialog
struct MyDialog {// 显隐控制设置为不占用@Link visible: Visibilitycontroller1: CustomDialogControllerbuild() {Row() {Column({ space: 10 }) {Text('自定义弹窗').fontSize(25).fontColor(Color.Blue)Flex({ justifyContent: FlexAlign.SpaceAround }) {Button('取消').onClick(() => {this.controller1.close()this.visible=Visibility.None}).backgroundColor(0xffffff).fontColor(Color.Black)Button('确认').onClick(() => {this.controller1.close()this.visible=Visibility.None}).backgroundColor(0xffffff).fontColor(Color.Black)}.width("100%")}.width("100%")}.height(100)}
}
@Entry
@Component
struct Index {@State visible: Visibility = Visibility.Noneprivate arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]dialogController1: CustomDialogController = new CustomDialogController({builder: MyDialog({visible: this.visible}), offset: {dx: 0, dy: 0},// 是否允许点击遮障层退出autoCancel: false,//设置窗口无蒙层isModal:false,})build() {Column({ space: 10 }) {Button('打开弹窗').onClick(() => {this.dialogController1.open()this.visible=Visibility.Visible})List(){ForEach(this.arr,(item:number)=>{ListItem(){Row(){Text('文本')}.justifyContent(FlexAlign.Center).width('100%').backgroundColor(0xFFFFFF).height(100)}})}.divider({strokeWidth:2,color:'#F1F3F5'}).height('90%')Column().width('100%').height('100%').position({x:0, y:0}).zIndex(10).backgroundColor(0x33000000).visibility(this.visible).hitTestBehavior(HitTestMode.None)}.width("100%")}
}

http://www.ppmy.cn/devtools/147849.html

相关文章

MyBatis中动态SQL执行原理

MyBatis 的动态 SQL 机制是通过在 SQL 语句中灵活地插入条件、拼接部分 SQL 或选择不同的 SQL 语句来实现的。MyBatis 提供了 <if>, <choose>, <when>, <otherwise>, <where>, <trim>, <foreach> 等标签&#xff0c;来支持动态生成 …

css 类名

CSS 类名 CSS 类名是一种用于标识和选择特定样式规则的命名约定。用于样式化页面。通过为 HTML 元素添加类名&#xff0c;您可以将特定的 CSS 样式应用于这些元素&#xff0c;实现页面样式与结构的分离和重用。 在编写 CSS 时&#xff0c;您可以通过类选择器&#xff08;类名…

解锁大数据治理:从概念到实战应用深度剖析

解锁大数据治理&#xff1a;从概念到实战应用深度剖析 大数据治理初印象&#xff1a;绝非单纯的数据管理 在当今这个数字化浪潮如汹涌洪水般澎湃而来的时代&#xff0c;数据就好似企业的“新石油”一般&#xff0c;持续不断地发挥着巨大作用&#xff0c;推动着企业的创新以及…

PyTorch快速入门教程【小土堆】之土说卷积操作

视频地址土堆说卷积操作&#xff08;可选看&#xff09;_哔哩哔哩_bilibili 跟神经网路相关的工具都放在torch.nn模块里面torch.nn — PyTorch 2.5 documentation nn.Conv1d在由几个输入平面组成的输入信号上应用一维卷积。nn.Conv2d在由几个输入平面组成的输入信号上应用二维…

Spring 框架——@Async 注解

目录 1.同步调用与异步调用 1.1.同步调用1.2.异步调用1.3.总结 2.注解 Async 介绍 2.1.用在方法上2.2.用在类上 3.使用演示 3.1.在启动类或者配置类上增加 EnableAsync 注解3.2.在异步方法上增加 Async 注解3.3.调用异步方法3.4.测试3.5.其它说明 4.注意事项 4.1.Async 注解失…

jenkins修改端口以及开机自启

修改Jenkins端口 方式一&#xff1a;通过配置文件修改&#xff08;以CentOS为例&#xff09; 找到配置文件&#xff1a;在CentOS系统中&#xff0c;通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件&#xff0c;也可以查看/etc/default/jenkins&…

Kafka和Jenkins实现EMR上PySpark和EC2上Airflow的CI/CD

以下是一个借助Kafka和Jenkins实现CI/CD的软件系统设计思路&#xff0c;用于管理AWS EMR上的PySpark ETL程序和EC2上Airflow调度程序&#xff0c;并结合Git进行版本控制。 这个软件系统设计能够让开发和运维过程更加自动化和高效&#xff0c;通过Git来管理代码版本&#xff0c;…

【2024年-7月-13日-开源社区openEuler实践记录】探索 CPM4OSSP-UI:提升用户交互体验的开源宝藏

开篇介绍 大家好&#xff0c;我是 fzr123&#xff0c;热衷于在开源世界里探寻那些能为开发者和用户带来惊喜的项目。今天&#xff0c;要跟大家详细聊聊CPM4OSSP-UI&#xff0c;这一专注于用户界面设计与交互优化的开源项目&#xff0c;正悄然改变着软件与用户交互的方式。 技…