- 博客(116)
- 收藏
- 关注
原创 鸿蒙应用拉起自己的智能体
名称说明queryText使用功能组件的初始查询文本,默认值为空功能组件按钮的大小,默认值为ControlSize.NORMALbuttonType功能组件的按钮类型显示按钮的阴影显示背景板时,组件的背景颜色功能组件带文本时,文本的颜色,当前最多仅支持设置两种颜色。
2025-12-15 08:54:33
508
原创 鸿蒙加载3D图形
最近很火的Remy大家有没有体验,平面的2D图片已经不能满足用户,未来可能会更多的相机支持拍摄3D照片。今天来了解一下鸿蒙的3D图形展示。我找了个汽车的3D模型资源,看一下展示效果。(方舟3D图形)基于轻量级的3D引擎以及渲染管线为开发者提供基础3D场景绘制能力,供开发者便捷、高效地构建3D场景并完成渲染。
2025-12-15 08:52:33
925
原创 鸿蒙6新特性:光源视效
名称说明color光源颜色intensity光源强度,范围0~1height光源高度bloom泛光效果强度,范围0~1。
2025-12-08 09:36:14
1241
原创 鸿蒙6组件:Text新特性
随着HarmonyOS版本的不断升级,目前最新Release版本是6.0.1(21),会增加一些新特性,也会废弃一些旧的API,我们要不断地关注版本的迭代,也许一行代码就解决的问题,因为不熟悉API而无从下手。今天来整理一下6.0以上Text组件新增的一些特性,以备在未来的需求中用到。1.设置文本颜色按线性或径向渐变,可以显示为径向渐变RadialGradientStyle或线性渐变LinearGradientStyle或纯色ColorShaderStyle的效果,shaderStyle的优先级高于font
2025-12-08 09:35:31
847
原创 鸿蒙6组件:闪控球
闪控球是一种在设备屏幕上悬浮的非全屏应用窗口,为应用提供临时的全局能力,完成跨应用交互。应用可以将关键信息以小窗(闪控球)模式呈现。切换为小窗(闪控球)模式后,用户可以进行其他界面操作,提升使用体验。
2025-12-03 15:09:05
450
原创 鸿蒙实现断点续下
实现断点续下,只需要我们将下载任务的下载进度记录下来,如果暂停或者异常退出,重新进入下载任务的时候,判断有没有下载的缓存记录,如果有就接续下载,如果没有就重新下载。之前的文章中,介绍了使用SFFT实现多线程下载的功能,今天有同学问到了异常退出如何继续下载,这篇介绍一下如何实现断点续下的功能。2.退出重新进入到下载页面时,初始话下载任务后,判断当前任务是否有下载缓存记录。由start方法可以发现,调用start时,会清除之前下载的缓存,重新下载。实现下载暂停继续,异常退出程序,重新进入可以接续下载。
2025-11-12 09:20:14
350
原创 仓颉编程入门:扩展库stdx安装和使用
stdx 软件包名称由操作系统、系统架构、stdx 版本号组成。不同环境的软件包如下:其中,x.x.x.x 为实际 stdx 的版本号,其中前 3 位为 cjc 版本号。
2025-11-12 09:19:22
803
原创 仓颉编程入门:并发编程
仓颉语言实现了M:N轻量线程模型,支持在少量系统线程之上创建海量用户线程,在实现层面用户线程对应协程,仓颉runtime会自动管理和调度这些协程。当用户线程t做I/O等资源访问操作时,若资源尚未就绪,线程t就会被runtime挂起等待、并调入其他线程运行,当资源就绪后又会适时恢复t的执行,高效利用CPU资源,实现高并发能力。
2025-11-06 09:22:25
671
原创 仓颉编程入门:集合
在基础数据类型一篇我们了解了仓颉类型,用来表示单一类型的元素构成的。使用 Array 来表示 Array 类型。T 表示 Array 的元素类型,T 可以是任意类型。由于Array是结构体类型,所以被定义的数组,不能增删,只能修改,适合。
2025-11-06 09:21:23
554
原创 仓颉编程入门:扩展
当我们需要在当前 package 中可见的类型(除函数、元组、接口)添加新功能,又不想或不能直接修改源文件时,这时就可以用到扩展功能。扩展可以不破坏类型的封装性,还能增加额外的功能。可以包括:成员函数、操作符重载函数、成员属性、实现接口。扩展以下功能:1.扩展不能增加成员变量。2.扩展的函数和属性必须拥有实现。3.扩展的函数和属性不能使用 open、override、 redef修饰。4.扩展不能访问被扩展类型中 private 修饰的成员。根据扩展,扩展可以分为和两种用法。
2025-11-04 08:24:08
245
原创 仓颉编程入门:枚举类型和模式匹配
1.定义 enum 时需要把它所有可能的取值一一列出,称这些值为 enum 的构造器。多个构造器之间使用 | 进行分隔(第一个构造器之前的 | 是可选的)。构造器可以是有名字的,也可以是没有名字的。2.每个 enum 中至少存在一个有名字的构造器。3.仓颉支持同一个 enum 中定义多个同名构造器,但是要求这些构造器的参数个数不同。4.每个 enum 中最多只有一个没有名字的 … 构造器,且 … 只能是最后一个构造器。5.enum支持递归定义。
2025-10-30 09:20:58
414
原创 仓颉编程入门:类和接口
class 的成员变量、静态初始化器、普通构造函数、主构造函数、成员函数、访问修饰符和struct的规则一样,可以参考struct的介绍。继承的使用和Java基本一致,需要注意几个关键字。覆盖时,要求父类中的成员函数使用 open 修饰,子类中的同名函数使用 override 修饰,其中 override 是可选的。sealed abstract class People{ //抽象类修饰符 open sealed 可选static init(){ // 静态初始化器country = '中国'
2025-10-30 09:20:07
1038
原创 仓颉入门:struct结构类型
struct 类型的定义以关键字 struct 开头,后跟 struct 的名字,接着是定义在一对花括号中的 struct 定义体。struct 定义体中可以定义一系列的成员变量、成员属性、静态初始化器、构造函数和成员函数。class 与 struct 的主要区别在于:class 是引用类型,struct 是值类型,它们在赋值或传参时行为是不同的;class 之间可以继承,但 struct 之间不能继承。mut 函数与普通的实例成员函数相比,多一个 mut 关键字来修饰。在函数之前增加 mut 修饰符。
2025-10-28 10:09:20
814
原创 仓颉入门:函数
仓颉使用关键字 func 来表示函数定义的开始,func 之后依次是函数名、参数列表、可选的函数返回值类型、函数体。func 函数名 (参数列表):返回值类型{函数体函数名可以是任意的合法标识符,下面依次对函数定义中的参数列表、函数返回值类型和函数体作进一步介绍。1.函数名相同,函数参数不同(是指参数个数不同,或者参数个数相同但参数类型不同)的两个函数构成重载。
2025-10-28 10:08:12
564
原创 仓颉入门:基础数据类型
Java基础数据类型(char)(boolean)编程语言中的:整数类型、浮点类型、布尔类型、字符类型、字符串类型、元组类型、数组类型、区间类型、Unit类型、Nothing类型。
2025-10-24 09:22:17
1190
原创 【案例实战】鸿蒙实现通讯录索引条
当我们需要列表展示通讯录、城市名时,通常会使用到右侧的索引条,可以帮助用户快速定位到某一类的头部。本文介绍一下使用实现2种常见模式的通讯录。1.以通讯录为例,联系人一般我们以首字母分类,所以索引列表就是名字的首字母A-Z,由于会有一些特殊符号,或者数字开头等不是汉字或字母开头的,我们都归类为#,这样我们就定义好了,索引列表数据2.列表中,我们需要将不同首字母的名字展示到一组,如果想要实现吸顶效果,这时就需要用到ListItemGroup,使用,可以快速定位到某一组的头部。
2025-10-22 17:11:16
406
原创 【案例实战】鸿蒙Next动态歌词组件封装增加暂停功能
上篇说到animateTo的刷新和V2冲突,如果要实现动画的暂停功能,这里我们使用createAnimator方法,自定义一个动画,然后执行play、pause方法,即可实现动画的播放、暂停功能。解析歌词时,需要读取歌词前后的时间,计算动画时长,需要注意时间格式,有的歌词格式下载下来可能时00:00:000,修改时间计算的正则表达式即可,保持歌词内容和解析的统一。我们把歌词先按行分割,记录每行歌词的开始时间和歌词内容,然后再将每行的歌词按照上一篇的方法分割,依次执行属性动画。
2025-10-20 09:45:39
340
原创 【案例实战】鸿蒙实现全局悬浮工具球
实现一个全局可随意拖动的悬浮工具球,可控制是否吸边,根据悬浮球的位置,向四个方向弹出工具栏。,点击展开时,需要计算每个弹出工具栏的位置,这里可以参考上一篇文章,使用三角函数计算每个按键的X,Y偏移量。,收起状态时系统窗口和控制按钮大小一样,当展开时,计算需要的窗口大小,重新设置悬浮窗口大小。4.窗口大小发生变化,操作按钮相对于窗口的位置也会发生变化,因此需要在。,上左上右下左下右,操作按钮在不同的区域内,向不同的方向弹出工具栏。展开时,想要工具栏向上展开,因此需要将。展开时,想要工具栏向下展开,因此。
2025-10-20 09:34:45
365
2
原创 【案例实战】鸿蒙实现自定义安全键盘
/ 行间距// 行数// 列间距// 按键高度onKeyBoardInput:(value:string) => void = (value:string) => {}//键盘出入回调onKeyBoardDelete:() => void = () => {} //键盘删除回调build() {Column(){Text('学习笔记安全键盘')Grid(){}else {item?.position?.position?.[1]==2&&
2025-10-17 15:47:43
800
原创 鸿蒙实现自定义安全键盘
/ 行间距// 行数// 列间距// 按键高度onKeyBoardInput:(value:string) => void = (value:string) => {}//键盘出入回调onKeyBoardDelete:() => void = () => {} //键盘删除回调build() {Column(){Text('学习笔记安全键盘')Grid(){}else {item?.position?.position?.[1]==2&&
2025-10-16 16:53:33
742
原创 鸿蒙Next自定义NavDestination标题栏
名称类型valueoptions设置默认主标题内容设置主标题main,副标题sub看一下这个类型的构造参数,支持传入自定义布局。名称类型说明builder设置标题栏内容height设置标题栏高度NavDestinationCustomTitle类型包括了CustomBuilder,支持设置自定义标题栏高度。只有主标题时,标题栏的推荐高度(56vp),同时有主标题和副标题时,标题栏的推荐高度(82vp)。1.只修改标题字体样式title可以接收形式的Build布局。
2025-10-16 16:50:10
454
原创 鸿蒙Next封装组件全局通用属性
当我们在多个地方需要使用相同样式的组件时,我们不能每个页面都重新定义一遍,这样不仅代码冗余,如果需要修改,也是很大的工作量。因此,需要将使用频繁或者公用的属性抽离封装出来,统一修改使用。对基础组件的属性封装,可以节省相同组件设置相同属性的代码量,也方便统一修改管理。1.一个组件上同时使用属性方法和applyNormalAttribute设置相同的属性,遵循属性覆盖原则,即后设置的属性生效。3.一个组件上多次使用applyNormalAttribute设置不同的Modifier实例,同样遵循属性覆盖原则。
2025-10-11 09:26:40
403
原创 鸿蒙Next手势详解系列:组合手势
组合手势由多种单一手势组合而成,通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型,支持顺序识别、并行识别和互斥识别三种类型。1.顺序识别,按照注册顺序识别,当滑动手势先注册时,触发滑动手势之后,后续只触发捏合手势;当捏合手势先注册时,触发捏合之后,后续只触发滑动手势。3.互斥识别,滑动手势和捏合手势不能同时识别,只能识别一个,当识别之后,可以持续执行。以下通过给一个图片添加组合手势,包括滑动手势和捏合手势,来。2.并发识别,手势识别和注册顺序无关,可以同时识别。
2025-10-11 09:25:06
340
原创 鸿蒙Next手势详解系列:长按手势、点击手势
事件,如果distanceThreshold为0或distanceThreshold不超出组件,响应onClick事件,如果distanceThreshold距离超出组件外,响应TapGesture事件。2.当同时设置了onClick事件,优先响应长按事件,如果duration小于100ms,可能无法响应onClick事件。为false时,onAction回调只回调一次,为true时,会每隔一个duration回调一次。1.当distanceThreshold为0是,手指按下滑出组件抬起不能响应点击事件。
2025-10-10 10:00:05
403
原创 鸿蒙Next手势详解系列:快滑手势
是快滑是一次触发即结束了,没有中间过程,滑动是一个持续的过程。因此我们可以在快滑手势触发成功之后做一些逻辑处理。这篇文章了解一下快滑手势(SwipeGesture),通过构造参数、回调函数和回调信息,来了解如何使用。方向为**[0,180],(-180,0)**基础了解之后,来看一下使用。
2025-10-10 09:59:23
255
原创 鸿蒙Next手势详解系列:旋转手势
这篇文章介绍一下旋转手势(RotationGesture)的触发条件和回调信息。还有控制组件旋转的rotate介绍。1.旋转过程中不会重新回调图片的onAreaChange,所以旋转中心点是基于图片初始状态的。回调比较简单, 只需要在onActionUpdate中获取旋转角度用于计算就可以了。2.centerZ测试不支持动态修改,感兴趣的可以自己赋值看一下效果。欢迎关注我的关注号,有其他想了解的可以给我留言。接下来看一下控制组件旋转的。
2025-09-29 09:23:14
421
原创 鸿蒙Next手势详解系列:捏合手势实现图片跟手缩放
1.由于我们的image放在stack布局中,居中显示,因此在默认放大之后,图片依然是居中显示的,要想实现跟手缩放,我们就需要在缩放的过程中,移动我们的图片,保持开始的缩放中心点位置保持不变。在上篇的捏合手势中,我们可以发现,图片在缩放过程中都是居中缩放的,虽然捏合中心点不一样,但是缩放效果都是一样的。的位置,这样就实现了跟手缩放,达到了图片的缩放中心保持不变的效果。实际图片展示中,我们希望实现,手指捏合放大或缩小的过程中,可以让。4.缩放过程中,根据缩放系数,计算开始的。3.计算开始捏合时的。
2025-09-29 09:21:47
482
原创 鸿蒙Next手势详解系列:捏合手势
了解了捏合手势回调的每个函数的意义,我们就可以根据利用他们实现我们想要的缩放效果。上面的计算公式只是证明pinchCenterX、pinchCenterY的含义,也可以根据其他方式计算。
2025-09-28 08:05:23
907
原创 鸿蒙Next手势详解系列:滑动手势
鸿蒙ArkTS组件为我们提供了6种基础手势,分别是点击手势(TapGesture)、长按手势(LongPressGesture)、滑动手势(PanGesture)、捏合手势(PinchGesture)、旋转手势(RotationGesture)、快滑手势(SwipeGesture)。这些手势的回调函数的事件信息都封装在GestureEvent对象中,本文主要介绍滑动手势,因此也只介绍滑动手势回调可接收到的GestureEvent属性。对象在。
2025-09-28 08:04:44
820
原创 鸿蒙通用属性-位置设置position、offset对比
修改一个组件的位置,可以通过position或offset实现,今天通过一篇文章,了解这两个属性的异同。
2025-09-23 15:57:14
369
原创 鸿蒙实现全局悬浮工具球
实现一个全局可随意拖动的悬浮工具球,可控制是否吸边,根据悬浮球的位置,向四个方向弹出工具栏。,点击展开时,需要计算每个弹出工具栏的位置,这里可以参考上一篇文章,使用三角函数计算每个按键的X,Y偏移量。,收起状态时系统窗口和控制按钮大小一样,当展开时,计算需要的窗口大小,重新设置悬浮窗口大小。4.窗口大小发生变化,操作按钮相对于窗口的位置也会发生变化,因此需要在。,上左上右下左下右,操作按钮在不同的区域内,向不同的方向弹出工具栏。展开时,想要工具栏向上展开,因此需要将。展开时,想要工具栏向下展开,因此。
2025-09-23 15:55:53
522
2
原创 鸿蒙Next实现一个弧形弹出工具栏
1.点击开关按钮弹出4个隐藏按钮,需要用到动画,可以将隐藏按钮的初始位置放到开关按钮的下面,点击修改距离开关按钮的距离,实现动画效果。实现一个类似于手机锁屏页左下角工具类按钮,点击工具按钮,弹出4个操作按钮,弧形排列。2.按钮排列,需要计算目标按钮和开关按钮的偏移距离,通过角度和半径计算偏移量。
2025-09-18 08:50:52
165
原创 鸿蒙Next字体大小随布局自适应
当我们在一个固定大小的区域内展示文字,如果文字太长,可能会超出展会区域,显示不全,因此我们希望文字内容可以根据区域大小自适应放大缩小。限制文本的最大和最小字号,此时文本会在这个范围内自适应布局缩放字体,并且fontSize属性不起作用。设置的不够小,内容过长,还是会出现内容显示不全的情况,因此为了文本全部显示,可以把。2.如果希望限制文本行数,可以设置。
2025-09-18 08:50:01
430
原创 鸿蒙Next动态歌词组件封装增加暂停功能
上篇说到animateTo的刷新和V2冲突,如果要实现动画的暂停功能,这里我们使用createAnimator方法,自定义一个动画,然后执行play、pause方法,即可实现动画的播放、暂停功能。解析歌词时,需要读取歌词前后的时间,计算动画时长,需要注意时间格式,有的歌词格式下载下来可能时00:00:000,修改时间计算的正则表达式即可,保持歌词内容和解析的统一。我们把歌词先按行分割,记录每行歌词的开始时间和歌词内容,然后再将每行的歌词按照上一篇的方法分割,依次执行属性动画。
2025-09-16 09:57:26
346
原创 鸿蒙Next图像混合模式blendMode
例如,Text组件在FAST模式下使用CLEAR模式,只是将文字内容所在的区域透明度变为0,而使用了离屏画布后,会在整个Text的底部增加一个不透明画布,这时候CLEAR模式会将整个Text区域透明度变为0。BlendMode,混合模式,定义当前内容和已有内容如何相互作用产生新的效果,不同的混合模式相互作用叠加的计算方式和效果也会对应有所不同。2.OFFSCREEN模式,是先创建了一个和源组件一样大小的画布,先把内容绘制到画布上,然后再和下层布局混合。DST_IN和DST_ATOP效果一样。
2025-09-16 09:55:55
950
原创 鸿蒙Next实现歌词字体颜色渐变
简单点说,就是解析歌词内容,拿到每个词,或者每句话的开始时间、结束时间,执行颜色渐变的动画,然后依次执行。由于当前animateTo与V2状态装饰器的刷新机制不兼容,如果使用V2需要animateToImmediately先执行依次,再执行animateTo,见下面代码,如果使用V1则正常,不需要加。离屏时会创建当前组件大小的离屏画布,再将当前组件(含子组件)的内容绘制到离屏画布上,再用指定的混合模式与下方画布已有内容进行混合。这里主要介绍需要用到的两种模式,之后出一期总结一下这个属性的各种效果。
2025-09-15 08:57:45
308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅