前言本文基于Api13信息标记,很是常见,比如手机桌面上的各种应用的右上角信息提示,微信的聊天中的消息未读提示等等,可以说非常常见。手机桌面消息提示:微信中的消息未读:如此常见的一个功能,在实际的开发中,我们应该如何来实现呢?当然了,实现方式具有很多种,比如使用Stack层叠组件,让信息提示组件在最顶层。Stack(){Image($r("app.media.startIcon")).width(50).height(50)Text("1").width(20).height(20).backgroun...
2025-03-31 21:43:51 4278浏览 0点赞 0回复 0收藏
前言本文基于Api13跑马灯的场景非常常见,在日常的开发中常见于消息、广告及公告通知,内容从左到右或者从右到左进行滚动播出,在鸿蒙开发中,实现起来可以说是非常简单,一个属性便可以搞定。比如给定一段内容,让它从右往左进行滚动播出,效果如下:鸿蒙当中,直接给文本组件,设置textOverflow属性,让overflow的值为TextOverflow.MARQUEE即可:Text(this.message).textOverflow({overflow:TextOverflow.MARQUEE}).border({w...
2025-03-31 21:41:19 3933浏览 0点赞 0回复 0收藏
前言本文基于Api13做过Android的同学都知道,我们可以拿到任意一个容器组件,比如LinearLayout或者RelativeLayout,或者其他容器视图,我们都可以进行自由的添加子组件,方便我们去处理一些子元素动态变化的场景,然而由于鸿蒙的ArkUI是声明式的UI,我们无法拿到一个容器组件进行对其动态的添加。比如一个Column组件,我们如何动态的添加子组件呢?可能很多人都会想到,通过条件判断的形式进行追加。声明组件类型,这里,可以创...
2025-03-31 21:40:09 4712浏览 0点赞 0回复 0收藏
前言本文基于Api13有这样一个案例,页面A跳转到了页面B,页面B又跳转了页面C,在页面C中需要把数据回调至页面A,我们该如何去做?又或者,在一个模块中需要调用另一个模块中的方法,又该如何调用?在很多的场景下,我们都会想到回调的方式,如果层级较多呢?逐级回调能够解决,但是是十分的麻烦,为了解决这个问题,在鸿蒙当中提供了一个类似于EventBus的能力,它就是EventHub。一句话解读:EventHub是鸿蒙开发中用于线程内通...
2025-03-31 21:38:39 4496浏览 0点赞 0回复 0收藏
前言本文基于Api13前边两篇文章,我们概述了几何图形矩形和圆形,分别使用Rect和Circle两个组件来实现,本篇文章,我们介绍另一个几何图形组件Ellipse,来实现一个椭圆图形。Ellipse是ArkUI框架中用于绘制椭圆的图形组件,支持填充、描边、透明度调节等基础功能,其核心特性包括,灵活布局,可单独使用或嵌套于Shape父组件中实现复杂矢量图形(类似SVG效果),也支持动态属性,通过状态变量实现动画效果,如颜色渐变、尺寸变化...
2025-03-31 19:46:39 3396浏览 0点赞 0回复 0收藏
前言本文基于Api13上篇文章,我们使用Rect组件实现了矩形效果,本篇文章,我们继续探究几何图形的中圆形,实现矩形有多种形式,同样,圆形,也是有多种形式,在上篇的文章中也简单的做了几个案例,比如,我们要实现一个半径50的实心圆形,如何实现呢?很简单,我们可以通过borderRadius属性来实现,搭配backgroundColor,代码案例如下:Column().width(100).height(100).backgroundColor(Color.Pink).borderRadius(100)效果如下...
2025-03-31 19:44:31 3219浏览 0点赞 0回复 0收藏
前言本文基于Api13几何图形的绘制,很多人都能想到使用Canvas,除了Canvas之外,其实还有着很多的实现方式,比如要实现一个简单的矩形,如果是填充方式,我们就可以使用backgroundColor,设置一定宽高即可,如果是轮廓边框模式,我们就可以使用border,我们可以简单列举一下:实现一个长100,宽100,背景为红色的实心矩形,这种情况下,我们就可以随意使用一个组件来实现:Column(){}.width(100).height(100).backgroundColor(C...
2025-03-31 19:42:24 2816浏览 0点赞 0回复 0收藏
前言本文代码案例基于Api13。随着官方的迭代,在新的Api中,对于新的应用开发,官方已经建议直接使用V2所属的装饰器进行开发了,所以,能上手V2的尽量上手V2吧,毕竟,V2是V1的增强版本,为开发者提供更多功能和灵活性,由V1升成V2,肯定是大势所趋;但是,毕竟V1有着大量的应用基础,使用的也非常广泛,如果V1版本的功能和性能已能满足需求,其实也不用切换,总之就一句话:新的应用尽量使用V2,老的应用,如果V1满足可以不切...
2025-03-26 17:37:11 2542浏览 0点赞 0回复 0收藏
前言代码案例基于Api13。在前边的文章中,关于wrapBuilder传递参数我们有过概述,无论是定义在局部还是全局,传递参数都是非常的简单,直接调用builder函数即可,简单案例如下所示:BuilderfunctionTextView(value:string){Text(value)}EntryComponentstructIndex{textBuilder:WrappedBuilder<[string]>wrapBuilder(TextView)build(){Column(){this.textBuilder.builder("我是传递的参数")}.width("100%").height("100%").j...
2025-03-26 17:33:58 8557浏览 0点赞 0回复 0收藏
前言本文代码案例基于Api13。AOP,也就是AspectOrientedProgramming,它是一种编程范式,旨在通过分离横切关注点来提高代码的模块化,将一些常见的关注点,比如日志记录、事务管理、安全控制等从核心业务逻辑中分离出来,使代码更易维护和扩展。提到AOP,大家最常见的就是日志的记录,AOP可以在不修改原有业务代码的情况下,通过代码插桩的方式,为应用程序添加日志记录功能;当然了,除了日志记录功能,相信大家肯定见过很多的...
2025-03-25 09:59:45 2659浏览 0点赞 0回复 0收藏
前言本文代码案例基于Api13。Builder装饰器,可以把build函数中的组件代码,单独的抽取出来,虽然简化了build函数,实现了组件之间的复用,但是代码还是在整个UI视图内,如下案例所示:EntryComponentstructIndex{BuilderTextView(text:string){Text(text)}build(){Column(){this.TextView("测试数据1")this.TextView("测试数据2")}.height('100%').width('100%').justifyContent(FlexAlign.Center)}}只能说,在同一个UI视...
2025-03-20 16:27:22 2240浏览 0点赞 0回复 0收藏
前言本文基于Api13。如果说一个页面中组件有很多,我们都统一写到build函数中,显而易见,会导致build函数代码非常冗余,并且在有相同UI时,也做不到可复用效果,那么,针对这一问题如何解决呢?答案就是抽取出来;在页面内实现UI组件的抽取剥离,其实,在实际的开发中是非常常见的,也就是通过Builder装饰器来实现。简单案例以下是一个多文本展示案例,非常简单,就是几个Text组件,未抽取之前,都统一写在build函数之中。Entr...
2025-03-20 16:07:30 2039浏览 0点赞 0回复 0收藏