【每日学点HarmonyOS Next知识】屏幕参数、半模态相关、三集联动、只显示部分卡面,自定义绘制

1、HarmonyOS 需要 获取屏幕 xdpi 与 ydpi 数据?

可以通过display.getDefaultDisplaySync参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5

@ohos.display (屏幕属性) :屏幕属性提供管理显示设备的一些基础能力,包括获取默认显示设备的信息,获取所有显示设备的信息以及监听显示设备的插拔行为。
导入模块:import { display } from '@kit.ArkUI';

2、HarmonyOS 半模态相关使用?
  1. 登录页出现转场方式应该是半模态,但是通过查询资料只能通过bindSheet属性进行绑定,而bindSheet里需要声明builder,builder是是自定义组件的自定义构建函数,在这里builder应该是我们的登录页,将我们的页面变为某个组件的自定义构建函数,这并不是很合理,除了这种方式还有其余方式达到半模态吗?
  2. list中某几个item点击的时候希望弹出弹窗,希望弹出这些弹窗的效果是半模态,如果使用bindsheet进行实现的话,会出现两个弹窗。

问题1参考以下demo:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/multimodaltransion
问题2由于使用了ForEach为每一个ListItem都绑定了半模态页面,同时每一个半模态页面的显示控制都是同一个字段“isShow1”。这样就会出现“isShow1”改变后,显示多个半模态页面

interface arrData {itemData: ItemInData[];
}class ItemInData {name: string = "";constructor(name: string) {this.name = name;}
}@Entry
@Component
struct SheetTransitionExample {showItem: ItemInData = new ItemInData("")arrData: arrData[] = [{itemData: [new ItemInData('1组1')]},{itemData: [new ItemInData('2组1'), new ItemInData('2组2'), new ItemInData('2组3')]}]@State isShow: boolean = false;@BuildermyBuilder(name: string) {Column() {Button(name).margin(10).fontSize(20)}.width('100%')}build() {Column() {/*** TODO: 知识点: 通过bindSheet属性为组件绑定半模态页面,由于半模态必须绑定组件,* 此处绑定无样式的Text组件作为开屏半模态展示。*/Text().bindSheet($$this.isShow, this.myBuilder(this.showItem.name), {showClose: false,preferType: SheetType.CENTER,onWillAppear: () => {console.log("BindSheet onWillAppear." + this.showItem.name)},onWillDisappear: () => {console.log("BindSheet onWillDisappear."+ this.showItem.name)}})List({ space: 20 }) {ForEach(this.arrData, (item: arrData, groupId: number) => {ListItemGroup() {ForEach(item.itemData, (project: ItemInData, rowIdOfGroup: number) => {ListItem() {Button(project.name).backgroundColor(Color.Black).width("100%").padding(10)}.onClick(() => {this.isShow = true;this.showItem = project;})}, (item: string) => item)}.divider({ strokeWidth: 0.5, color: '#CFD6D6' }) // 每行之间的分界线})}.backgroundColor(Color.Green)}.justifyContent(FlexAlign.Start).width('100%').height('100%')}
}
3、HarmonyOS 如何做一个选择三级联动的省市区选择器?

可以用TextPicker来实现,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-textpicker-V5
示例代码:

@Entry
@Component
struct TextPickerExample {private cascade: TextCascadePickerRangeContent[] = [{text: '辽宁省',children: [{ text: '沈阳市', children: [{ text: '沈河区' }, { text: '和平区' }, { text: '浑南区' }] },{ text: '大连市', children: [{ text: '中山区' }, { text: '金州区' }, { text: '长海县' }] }]},{text: '吉林省',children: [{ text: '长春市', children: [{ text: '南关区' }, { text: '宽城区' }, { text: '朝阳区' }] },{ text: '四平市', children: [{ text: '铁西区' }, { text: '铁东区' }, { text: '梨树县' }] }]},{text: '黑龙江省',children: [{ text: '哈尔滨市', children: [{ text: '道里区' }, { text: '道外区' }, { text: '南岗区' }] },{ text: '牡丹江市', children: [{ text: '东安区' }, { text: '西安区' }, { text: '爱民区' }] }]}]build() {Column() {TextPicker({ range: this.cascade }).onChange((value: string | string[], index: number | number[]) => {console.info('TextPicker 多列联动:onChange ' + JSON.stringify(value) + ', ' + 'index: ' + JSON.stringify(index))})}}
}

TextPicker(options?: TextPickerOptions)
根据range指定的选择范围创建文本选择器。

参数名类型必填说明
optionsTextPickerOptions配置文本选择器的参数。
名称类型必填说明
rangestring[] | string[] []10+ | Resource |TextPickerRangeContent)[]10+ | TextCascadePickerRangeContent[]10+选择器的数据选择列表。不可设置为空数组,若设置为空数组,则不显示;若动态变化为空数组,则保持当前正常值显示。

说明:单列数据选择器使用string[],Resource,TextPickerRangeContent[]类型。

多列数据选择器使用string[][]类型。

多列联动数据选择器使用TextCascadePickerRangeContent[]类型。

Resource类型只支持strarray.json。

range的类型及列数不可以动态修改。
selectednumber | number[]10+设置默认选中项在数组中的索引值。

默认值:0

说明:单列数据选择器使用number类型。

多列、多列联动数据选择器使用number[]类型。

从API version 10开始,该参数支持$$双向绑定变量。
valuestring | string[]10+设置默认选中项的值,优先级低于selected。

默认值:第一个元素值

说明:只有显示文本列表时该值有效。显示图片或图片加文本的列表时,该值无效。

单列数据选择器使用string类型。

多列、多列联动数据选择器使用string[]类型。

从API version 10开始,该参数支持$$双向绑定变量。
4、HarmonyOS List组件超过本身大小时最后一个cardview只展示了部分大小?

在Column中添加一个固定大小的view,剩余空间用List填满,如果List内容超过一整个屏幕时,最后一个cardview无法完全展示。

把Column组件替换成Flex弹性布局,其他的设置(NavigationBar.height(90vp) 固定)

5、HarmonyOS 关于canvas中 动态设置lineto?
@Entry
@Component
struct CanvasDemo {private settings: RenderingContextSettings = new RenderingContextSettings(true)private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)@State @Watch('draw')content: string = ""draw() {this.context.clearRect(0, 0, 200, 200) // 清理画布内容this.context.fillText(this.content, 50, 50) // 重新填充}build() {Column() {Canvas(this.context).width('100%').height('25%').backgroundColor('#F5DC62').onReady(() => {//可以在这里绘制内容。this.context.font = '55px sans-serif'this.context.fillText(this.content, 50, 50)})TextInput({text:$$this.content})}.borderColor('#31525B').borderWidth(12).width('100%').height('100%')}
}

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

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

相关文章

Java 大视界 -- 基于 Java 的大数据机器学习模型的迁移学习应用与实践(129)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值

我的个人主页 我的专栏: 人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!! 点赞👍收藏❤ 引言:AIGC 浪潮下的新机遇 在当今数字化飞速发展的时代,人工智能生成内容&…

【BERT和GPT的区别】

BERT采用完形填空(Masked Language Modeling, MLM)与GPT采用自回归生成(Autoregressive Generation)的差异,本质源于两者对语言建模的不同哲学导向与技术目标的根本分歧。这种选择不仅塑造了模型的架构特性&#xff0c…

Java实体类转JSON时如何避免null值变成“null“?

在Java开发中,实体类与JSON的转换是一个非常常见的需求。今天,我们要聊聊一个特别的重要但又常常被忽视的问题:当我们将Java实体类转换为JSON格式时,如何处理那些null值,避免它们在JSON中出现为字符串“null”呢&#…

五大基础算法——枚举算法

枚举算法 是一种通过遍历所有可能的解来寻找问题答案的算法思想。它通常用于解决那些解空间有限且可以直接列举所有可能情况的问题。以下是枚举算法的核心概念、适用场景、实现方法及经典例题: 一、核心概念 解空间 所有可能的解的集合。 遍历 通过循环或递归逐一检…

C语言高级学习之变量和内存分布

一.变量和内存分布 1.课程要求 2.技术层次 3.C语言标准 1.3.1 K&R C 起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩柯林汉(Brian Kernighan) 和 丹尼斯里奇(D…

【004】deepseek本地化部署后,python的调用方式_#py

python调用本地deepseek 1 本地化部署deepseek2 python调用方式 1 本地化部署deepseek 已经有很多大佬们说了不少部署本地化部署deepseek的工作了,我就不过多重复了。 先安装Ollama软件,再通过Ollama获取deepseek的模型文件,大家根据电脑的配…

蓝桥杯学习-12递归

12递归 1.概述 2.几个递归模板 (1)求阶乘 int f(int n){ if(n 1) return 1; return f(n-1) * n; }(2)斐波拉契序列 int f(int n){ if(n 1 || n 2) return n; return f(n - 1) f(n - 2); }例题一-蓝桥5194 int f(int n){if(n 0) return 1;if(n % 2 0) return f(n / 2)…

Python----数据可视化(Pyecharts三:绘图二:涟漪散点图,K线图,漏斗图,雷达图,词云图,地图,柱状图折线图组合,时间线轮廓图)

1、涟漪特效散点图 from pyecharts.globals import SymbolType from pyecharts.charts import EffectScatter from pyecharts.faker import Faker from pyecharts import options as opts from pyecharts.globals import ThemeType # 绘制图表 es (EffectScatter(init_optsop…

自然语言处理预训练模型的研究综述

📕参考::2020-11-02,https://kns.cnki.net/kcms/detail/11.2127.tp.20201030.1952.017.html 主要是这篇文章的自己摘了点笔记。 预训练模型的深度学目标是如何使预训练好的模型处于良好的初始状态,在下游任务中达到更好的性能表现…

ES6(1) 简介与基础概念

1. ES6 简介 ES6(ECMAScript 6)是 JavaScript 的一个重要版本,它在 ES5 的基础上进行了扩展和优化。ES6 主要应用于现代 Web 开发,提高了 JavaScript 的编程效率和可读性。 2. ES6 与 JavaScript 的关系 JavaScript 是一种基于 E…

HTML深度解读

## 引言 HTML(HyperText Markup Language)是构建网页的基础语言。自1991年由Tim Berners-Lee发明以来,HTML已经经历了多次版本更新,从HTML 1.0到HTML5,每一次更新都带来了新的特性和功能。本文将深入探讨HTML的核心概…

一次Linux下 .net 调试经历

背景: Xt160Api, 之前在windows下用.net调用,没有任何问题。 但是移植到Linux去后,.net程序 调用 init(config_path) 总是报错 /root/test 找不到 traderApi.ini (/root/test 是程序目录) 然后退出程序 解决过程: 于是考虑是不是参数传错了&…

iOS底层原理系列01-iOS系统架构概览-从硬件到应用层

1. 系统层级结构 iOS系统架构采用分层设计模式,自底向上可分为五个主要层级,每层都有其特定的功能职责和技术组件。这种层级化结构不仅使系统更加模块化,同时也提供了清晰的技术抽象和隔离机制。 1.1 Darwin层:XNU内核、BSD、驱动…

k8s 修改节点驱逐阈值

编辑 /var/lib/kubelet/config.yaml 文件 kind: KubeletConfiguration evictionHard:nodefs.available: "5%" # 降低磁盘压力触发阈值imagefs.available: "10%" # 调整容器镜像存储触发阈值nodefs.inodesFree: "3%

日志存储与分析

日志是系统运行的详细记录,包含各种事件发生的主体、时间、位置、内容等关键信息。出于运维可观测、网络安全监控及业务分析等多重需求,企业通常需要将分散的日志采集起来,进行集中存储、查询和分析,以进一步从日志数据里挖掘出有…

PHP与MySQL的高效数据交互:最佳实践与优化技巧

在现代Web开发中,PHP与MySQL的组合仍然是最常见的技术栈之一。PHP作为一种广泛使用的服务器端脚本语言,与MySQL这一强大的关系型数据库管理系统相结合,能够构建出功能强大且高效的Web应用。然而,随着数据量的增长和用户需求的提升…

Flutter 边框按钮:OutlinedButton 完全手册与设计最佳实践

目录 1. 引言 2. OutlinedButton 的基本用法 3. 主要属性 3.1 核心属性详解 3.2 ButtonStyle 子属性详解 (styleFrom/copyWith) 状态响应优先级说明 4. 自定义按钮样式 4.1 修改边框颜色和文本颜色 4.2 修改按钮形状 4.3 修改按钮大小 4.4 集中演示 5. 结论 相关推…

【Node.js入门笔记4---fs 目录操作】

Node.js入门笔记4 Node.js---fs 目录操作一、目录操作1.fs.mkdir():创建目录。异步,非阻塞。创建单个目录创建多个目录创建目前之前需要确认是否存在: 2. fs.mkdirSync():用于创建一个新的目录。异步,非阻塞。3.fs.rmd…

IP风险度自检,互联网的安全“指南针”

IP地址就像我们的网络“身份证”,而IP风险度则是衡量这个“身份证”安全性的重要指标。它关乎着我们的隐私保护、账号安全以及网络体验,今天就让我们一起深入了解一下IP风险度。 什么是IP风险度 IP风险度是指一个IP地址可能暴露用户真实身份或被网络平台…