【每日学点HarmonyOS Next知识】上下拉列表、停止无限循环动画、页面列表跟随列表滑动、otf字体、日期选择
1、HarmonyOS 实现只需要保留上拉加载更多,但是不需要下拉刷新?
Refresh通过参数refreshing判断当前组件是否正在刷新,可以控制该参数变化来触发下拉刷新:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-refresh-V5#ZH-CN_TOPIC_0000001930756929__refreshoptions%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8E
Demo:
@Entry
@Component
struct RefreshExample {@State isRefreshing: boolean = false@State arr: String[] = ['0', '1', '2', '3', '4','5','6','7','8','9','10']build() {Column() {Button('刷新').onClick(()=>{this.isRefreshing = true})Refresh({ refreshing: $$this.isRefreshing}) {List() {ForEach(this.arr, (item: string) => {ListItem() {Text('' + item).width('100%').height(100).fontSize(16).textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)}}, (item: string) => item)}.onScrollIndex((first: number) => {console.info(first.toString())}).width('100%').height('100%').divider({strokeWidth:1,color:Color.Yellow,startMargin:10,endMargin:10}).scrollBar(BarState.Off)}.onStateChange((refreshStatus: RefreshStatus) => {console.info('Refresh onStatueChange state is ' + refreshStatus)}).onOffsetChange((value: number) => {console.info('Refresh onOffsetChange offset:' + value)}).onRefreshing(() => {setTimeout(() => {this.isRefreshing = false}, 2000)console.log('onRefreshing test')}).backgroundColor(0x89CFF0).refreshOffset(64).pullToRefresh(true)}}
}
2、HarmonyOS 如何停止一个无限循环的动画?
如何停止一个无限循环的动画
第一次触发无限循环动画后,再快速点击打断该无限循环动画, 再次点击就无法看到动画了。问题原因:动画其实不是不跑了,而是一直再跑,动画是不断的再叠加,后面就不明显了。解决方案:需要设置一个duration为0的动画,来停掉上一个动画,但是需要停在指定值,且和上一次设的终值不一样,然后再创建需要的动画。简单示例:
@Entry
@Component
struct Page240119142354017 {@State message: string = "Hello World";@State opacityValue: number = 0.5@State isRecording: boolean = false;build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).opacity(this.opacityValue).onClick(() => {if(this.isRecording) {// 设置一个duration为0的动画停掉上一次动画animateTo({ duration: 0, iterations: 1, playMode: PlayMode.Normal }, () => {// 这里的opacityValue不可以和上一次设置的终止0.1相同this.opacityValue = 0.2})this.isRecording = false;// 再创建需要的动画animateTo({ duration: 0, iterations: 1, playMode: PlayMode.Normal }, () => {this.opacityValue = 1})} else {this.isRecording = trueanimateTo({ duration: 1500, iterations: -1, }, () => {this.opacityValue = 0.1})}})}.width("100%")}.height("100%")}
}
3、HarmonyOS 同一页面其中一个列表跟随另一个列表滚动?
如何在一个页面2个列表的情况下,滚动一个列表的时候,另外一个列表也同时跟着滚动?
参考demo:
@Entry
@Component
struct index240426171014042 {@State dataList: Array<number> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]private leftListScroller: Scroller = new Scroller()private rightListScroller: Scroller = new Scroller()private scrollFlag = -1 // 1=左边 2=右边build() {Row() {this.left()this.right()}.width('100%').height('100%').backgroundColor('#a68765')}// 左边@Builderleft() {Column() {Text('表头').width(100).height(100)List({ scroller: this.leftListScroller }) {ForEach(this.dataList, (item: number, index) => {ListItem() {Row() {Text(`左边${item}`).width(100).textAlign(TextAlign.Center)}.width("100%").height(100).backgroundColor(Color.Blue)}})}.width(100).height("100%").cachedCount(5).edgeEffect(EdgeEffect.None).onScrollStart(() => {this.scrollFlag = 1}).onScrollStop(() => {this.scrollFlag = -1})/*.onScroll((scrollOffset, state) => {let yOffset = this.leftListScroller.currentOffset().yOffsetif (this.scrollFlag == 1) {// this.rightListScroller.scrollBy(0, scrollOffset)this.rightListScroller.scrollTo({ xOffset: 0, yOffset: yOffset })}})*/.onScrollFrameBegin((offset: number, state: ScrollState) => {if (this.scrollFlag == 1) {let yOffset = this.leftListScroller.currentOffset().yOffset + offsetthis.rightListScroller.scrollTo({ xOffset: 0, yOffset: yOffset })} return { offsetRemain: offset }})}}// 右边@Builderright() {Scroll() {Column() {Text('表头').width(700).height(100)this.rightList()}.width(700).height('100%').alignItems(HorizontalAlign.Start).backgroundColor(Color.Orange)}.width(700).height('100%')// .layoutWeight(1).scrollable(ScrollDirection.Horizontal).backgroundColor(Color.Pink)}// 右边的列表@BuilderrightList() {List({ scroller: this.rightListScroller }) {ForEach(this.dataList, (item: number, index) => {ListItem() {Row() {Text(`第一列${item}`).width(100).textAlign(TextAlign.Center)Text(`第二列${item}`).width(100).textAlign(TextAlign.Center)Text(`第三列${item}`).width(100).textAlign(TextAlign.Center)Text(`第四列${item}`).width(100).textAlign(TextAlign.Center)Text(`第五列${item}`).width(100).textAlign(TextAlign.Center)Text(`第六列${item}`).width(100).textAlign(TextAlign.Center)Text(`第七列${item}`).width(100).textAlign(TextAlign.Center)}.width('100%').height(100)}})}.width(700).height('100%').edgeEffect(EdgeEffect.None).backgroundColor(Color.Yellow).onScrollStart(() => {this.scrollFlag = 2}).onScrollStop(() => {this.scrollFlag = -1})/*.onScroll((scrollOffset, state) => {let yOffset = this.rightListScroller.currentOffset().yOffsetif (this.scrollFlag == 2) {// this.leftListScroller.scrollBy(0, scrollOffset)this.leftListScroller.scrollTo({ xOffset: 0, yOffset: yOffset })}})*/.onScrollFrameBegin((offset: number, state: ScrollState) => {if (this.scrollFlag == 2) {let yOffset = this.rightListScroller.currentOffset().yOffset + offsetthis.leftListScroller.scrollTo({ xOffset: 0, yOffset: yOffset })} return { offsetRemain: offset }})}}
4、HarmonyOS ArkUI的Text支持的字体类型是否包括otf类型的字体文件?
$rawfile方式参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-font-V5
字体文件放置路径:src/main/resources/rawfile/font/gealova.otf
代码中引用示例:
font.registerFont({familyName: 'Gealova',familySrc: $rawfile('font/gealova.otf')
})
在EntryAbility的onWindowStageCreate中注册字体,在模拟器上运行:
//EntryAbility的onWindowStageCreate中:
windowStage.getMainWindow().then(res=>{//注册字体const uiCtc=res.getUIContext()uiCtc.getFont().registerFont({familyName:'mediumRawFile',familySrc:$rawfile('font/BLACKTW-Bold.otf')})uiCtc.getFont().registerFont({familyName:'twrafile',familySrc:$rawfile('font/TW-Bold.otf')})
})//index.ets
@Entry
@Component
struct index{@State message: string = 'Hello World'build() {Column() {Text(this.message).align(Alignment.Center).fontSize(20).fontFamily('mediumRawFile') // mediumRawFile:注册自定义字体的名字Text('eeeee').align(Alignment.Center).fontSize(20).fontFamily('twrafile')}.width('100%')}}
5、HarmonyOS DatePicker?
DatePicker 是否可以控制 只显示 年和月 的属性。
只显示年和月的属性,可使用TextPickerDialog,range字段设置可选年月。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-textpicker-V5
TextPicker(options?: TextPickerOptions)
根据range指定的选择范围创建文本选择器。
TextPickerOptions对象说明
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| range | string[] | string[] []10+ | Resource |<br>TextPickerRangeContent[]| TextCascadePickerRangeContent[] | 是 | 选择器的数据选择列表。不可设置为空数组,若设置为空数组,则不显示;若动态变化为空数组,则保持当前正常值显示。 说明:单列数据选择器使用 string[],Resource,TextPickerRangeContent[]类型。多列数据选择器使用 string[][]类型。多列联动数据选择器使用 TextCascadePickerRangeContent[]类型。Resource类型只支持strarray.json range的类型及列数不可以动态修改。 |
| selected | number | number[]10+ | 否 | 设置默认选中项在数组中的索引值。 默认值:0 说明:单列数据选择器使用number类型。 多列、多列联动数据选择器使用 number[]类型。从API version 10开始,该参数支持 $$双向绑定变量。 |
| value | string | string[]10+ | 否 | 设置默认选中项的值,优先级低于selected。 默认值:第一个元素值 说明:只有显示文本列表时该值有效。显示图片或图片加文本的列表时,该值无效。 单列数据选择器使用string类型。 多列、多列联动数据选择器使用 string[]类型。从API version 10开始,该参数支持 $$双向绑定变量。 |
相关文章:
【每日学点HarmonyOS Next知识】上下拉列表、停止无限循环动画、页面列表跟随列表滑动、otf字体、日期选择
1、HarmonyOS 实现只需要保留上拉加载更多,但是不需要下拉刷新? Refresh通过参数refreshing判断当前组件是否正在刷新,可以控制该参数变化来触发下拉刷新:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5…...
解决git init 命令不显示.git
首先在自己的项目代码右击 打开git bash here 输入git init 之后自己的项目没有.git文件,有可能是因为.git文件隐藏了,下面是解决办法...
利用AI让数据可视化
1. 从问卷星上下载一份答题结果。 序号用户ID提交答卷时间所用时间来源来源详情来自IP总分1、《中华人民共和国电子商务法》正式实施的时间是()。2、()可以判断企业在行业中所处的地位。3、()是指店铺内有…...
神经网络微调技术解析
神经网络微调技术 微调(Fine-tuning)是迁移学习的核心技术,通过在预训练模型基础上调整参数,使其适应特定任务或领域。以下从传统方法、参数高效微调(PEFT)、新兴技术三个维度展开,覆盖主流技术…...
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)深度解析与实战复现
0x00 漏洞概述 CVE-2017-10271 是Oracle WebLogic Server WLS Security组件中的远程代码执行漏洞。攻击者通过构造恶意XML请求,利用XMLDecoder反序列化机制绕过安全验证,最终实现服务器权限接管。 影响版本 WebLogic 10.3.6.0WebLogic 12.1.3.0WebLog…...
解决qt中自定插件加载失败,不显示问题。
这个问题断断续续搞了一天多,主要是版本不匹配问题。 我们先来看下 Based on Qt 6.6.0 → 说明 Qt Creator 本身 是基于 Qt 6.6.0 框架构建的。MSVC 2019, 64-bit → 说明 Qt Creator 是使用 Microsoft Visual C 2019 编译器(64 位) 编译的。…...
Git 面试问题,解决冲突
1.问题描述 在多人协作开发中,当多个开发者在同一文件的同一部分进行修改并提交时,Git 无法自动合并这些更改,从而产生代码冲突(Conflict)。冲突的代码会被 Git 标记出来,需要开发者手动解决。 冲突原因 多…...
Apache Shiro 使用教程
Apache Shiro 使用教程 Apache Shiro是一个强大且灵活的开源安全框架,主要用于处理身份验证(Authentication)、授权(Authorization)、加密(Cryptography)和会话管理(Session Manage…...
用maven生成springboot多模块项目
用Maven生成Spring Boot多模块项目,可以按照以下步骤操作: 1. 创建父项目 首先,使用Maven的archetype插件创建一个空的Maven项目作为父项目。打开终端,执行以下命令: mvn archetype:generate -DgroupIdcom.example -…...
【最佳实践】Go 状态模式
设计思路 状态模式的核心在于将对象的行为封装在特定的状态类中,使得对象在不同的状态下表现出不同的行为。每个状态实现同一个接口,允许对象在运行时通过改变其内部状态对象来改变其行为。状态模式使得状态转换更加明确,并且易于扩展新的状…...
智慧社区3.0
项目介绍: 此项目旨在推动成都市探索**超大城市社区发展治理新路**,由三个实验室负责三大内容 1、**研发社区阵地空间管理模块**:AI算法实现态势感知(如通过社区图片和视频、文本,对环境 空间质量、绿视率、安全感分…...
C#语法基础总结
输入和输出 输入 Console.Read(); 从屏幕读取一个字符,并返回该字符所对应的整型数字 Console.ReadLine(); 从屏幕读取一串字符,并返回该字符串 输出 Console.WriteLine(); 输出内容,并换行 Console.Write(); 输出内容,不换行…...
Springboot+Vue登录、注册功能(含验证码)(后端!)
我们首先写一个接口,叫login!然后对传入一个user,因为我们前端肯定是要传过来一个user,然后我们后端返回一个user,因为我们要根据这个去校验!我们还引入了一个hutool的一个东西,在pom文件里面引…...
深入理解 HTML 中的<div>和元素:构建网页结构与样式的基石
一、引言 在 HTML 的世界里,<div>和元素虽看似普通,却扮演着极为关键的角色。它们就像网页搭建过程中的万能积木,能够将各种 HTML 元素巧妙地组合起来,无论是构建页面布局,还是对局部内容进行样式调整ÿ…...
搞定python之八----操作mysql
本文是《搞定python》系列文章的第八篇,讲述利用python操作mysql数据库。相对来说,本文的综合性比较强,包含了操作数据库、异常处理、元组等内容,需要结合前面的知识点。 1、安装mysql模块 PyMySql模块相当于数据库的驱动&#…...
游戏立项时期随笔记录(1)
模拟经营的项目还没有完全结束,这几天又有可能涉及到一个新项目。感想随笔记录一下,防止忘记。今天一天整理这个,搞得今天没时间看数学和AI。 在 Unity3D 游戏前端主程序的立项时期,核心目标是明确技术方向、评估可行性、搭建基础…...
LVGL 中设置 UI 层局部透明,显示下方视频层
LVGL层次 LVGL自上而下分别是layer_sys > layer_top > lv_sreen_active > layer_bottom 即 系统层、顶层、活动屏幕、底层 原理 如果将UI设置为局部透明,显示下方的视频层,不仅仅需要将当前活动屏幕的背景设置为透明,还需要将底层…...
Debezium日常分享系列之:Debezium 3.1.0.Beta1发布
Debezium日常分享系列之:Debezium 3.1.0.Beta1发布 新特性和改进Debezium 平台的首次发布Percona 的最小锁定新的 Oracle 源信息 SCN 和时间戳字段Vitess Epoch/零日期列解析的变化Vitess 二进制排序的 tiny、medium 和 long 文本列的变化CloudEvent traceparent 支…...
21.多态
一、多态概念 多种形态。 静态多态:编译时多态。(函数重载) 动态多态:运行时多态。(继承关系下,调用父类指针或引用,对于不同的对象有不同的行为) 二、多态的定义及实现 1ÿ…...
【蓝桥杯】第十三届C++B组省赛
⭐️个人主页:小羊 ⭐️所属专栏:蓝桥杯 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 试题A:九进制转十进制试题B:顺子日期试题C:刷题统计试题D:修剪灌木试题E…...
C# PaddleOCR字符识别
1 安装Nuget 2 C# using System; using OpenCvSharp; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models.Local; using Sdcb.PaddleOCR.Models; using Sdcb.PaddleInference;namespace ConsoleApp1 {public class MichaelOCR{string imagePath "D:\\BUFFER\\VS\\Text\…...
网络爬虫相关
一、爬虫的基础内容 1、基本概念和用途 1.1、概念: 模拟浏览器、发送请求,获取响应。(只能获取客户端所展示出来的数据) 1.2、特点:知识碎片化,针对不同的网站对应的方法也不同。 爬虫:模拟…...
算法及数据结构系列 - 二分查找
系列文章目录 算法及数据结构系列 - BFS算法 文章目录 二分查找框架思路经典题型二分查找寻找左侧边界寻找右侧边界 刷题875. 爱吃香蕉的珂珂1011. 在 D 天内送达包裹的能力392. 判断子序列 二分查找 框架思路 int binarySearch(int[] nums, int target) {int left 0, righ…...
多环境开发-Profiles
在实际的项目开发中,我们通常会涉及多个环境,如开发环境(dev)、测试环境(test)和生产环境(pro)。在不同的环境下,程序的配置信息会有所不同,例如连接的数据库…...
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…...
MambaVision:一种Mamba-Transformer混合视觉骨干网络
摘要 我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT&…...
【Visio使用教程】
Visio使用教程 1. Visio 的基本介绍1.1 Visio 是什么?核心特点: 1.2 主要功能与应用场景典型用途:行业应用: 1.3 版本与兼容性1.4 Visio下载1.5 安装 2. Visio 的界面与基础操作2.1 界面布局详解2.2 创建新文档与模板选择2.3 形状…...
深度学习-服务器训练SparseDrive过程记录
1、cuda安装 1.1 卸载安装失败的cuda 参考:https://blog.csdn.net/weixin_40826634/article/details/127493809 注意:因为/usr/local/cuda-xx.x/bin/下没有卸载脚本,很可能是apt安装的,所以通过执行下面的命令删除: a…...
什么是梯度方差和缩放因子
什么是梯度方差和缩放因子 目录 什么是梯度方差和缩放因子计算梯度方差(Fisher 信息)作用梯度方差计算方式(方差越大,参数越重要,小步更新(细致一些))示例使用缩放因子作用示例两者的区别总结在 LoRA(Low-Rank Adaptation)中,计算梯度方差和使用缩放因子是两个不同的概…...
Linux 如何上传本地文件以及下载文件到本地命令总结
如果你希望在 Shell 终端中将远程服务器上的文件下载到本地电脑,可以使用以下工具和命令: 1. rz / sz(用于 Xshell、MobaXterm 等终端) 如果你使用的是Xshell、SecureCRT、MobaXterm等支持 rz/sz 的终端,可以使用 rz …...
