文章目录概要技术细节小结概要之前的文章讲解了通过官方TCPSocket来实现socket通信,这篇文章我们来看下如何通过使用SocketIO三方库来实现长连接。技术细节假如服务地址为:https:host:portapp我们将服务地址拆解为请求地址:https:host:port命名空间:app1、在项目的ohpackage.json文件中添加引用,这里我们使用2.0版本"dependencies":{"ohossocketio2.x":"^1.0.3"}2、创建SocketIO实例...
文章目录概要整体架构流程技术名词解释技术细节概要使用Canvas可以绘制图形,但是如果要实现图形的缩放和滑动效果,则需要我们自己通过拦截手势事件来实现了。整体架构流程实现思路:1、通过给Canvas组件添加捏合手势来计算图形显示比例、通过添加拖拽手势来计算图形移动的距离。2、触发Canvas重新绘制,绘制时通过上一步计算出来的显示比例和移动距离,来控制图形的绘制区域。技术名词解释Can...
文章目录概要技术细节小结概要使用ArkTS定义接口类,在编写接口实现类时,是无法声明默认实现的,这样无论接口类中的函数是否需要用到,都需要在实现类中进行实现,造成大量的冗余代码,降低代码的可读性。下面我将讲述一下我对此问题的解决思路。技术细节1、为了解决上述问题,我想到了将接口类中的函数声明为可空类型,如下所示exportinterfaceLoadCallback{onHeightChanged:(height:number)>voidclo...
文章目录概要整体架构流程技术细节小结概要对于简单的应用,一般单一模块就能满足需求。但是对于规模比较大,功能比较多的应用,就需要考虑通过组件化拆分,来让项目架构更清晰了。那么就会带来新的问题,如何在组件之间进行数据通信呢?整体架构流程技术细节1、在公共组件中按照业务组件分别创建通信接口,对其它组件暴漏可供调用的函数exportinterfaceICompComm{}exportinterfaceIModule1Com...
文章目录概要技术细节小结概要在上篇文章中,我们已经对整体架构有了比较详细的了解,本章我将提供一些样例代码供大家参口,如有错误,欢迎指正。技术细节实例化TCPSocketprivatesocketssocket.constructTCPSocketInstance()privateworkernewworker.ThreadWorker("entryetsworkersWorker.ets"));已连接socket.on('connect',()>{});断开连接socket.on('close',data{});接收数据socket.on('message',valu...
文章目录概要技术名词解释技术细节小结概要在上篇文章中,我们已经对整体架构有了初步的了解,这篇文章中,我将结合具体的使用场景,来对架构细节进行讲解。技术名词解释报文:为了减小每次网络通信所占用的流量,通常通过自定义网络报文格式的方式来减小数据包的体积。报文的格式通常为报文头+报文体。粘包拆包:当数据包比较小时,有时会遇到接收到的数据包为多个报文拼在一起的情况,这种情...
文章目录概要整体架构流程技术名词解释技术细节小结概要本文章对使用ArkTS实现APP与服务器长连接的实践经验进行了总结,希望能帮助到有需要的朋友。经过技术调研,我选择使用官方的TCPSocket来实现socket通信。整体架构流程技术名词解释Worker:Worker是与主线程并行的独立线程。创建Worker的线程称之为宿主线程,Worker自身的线程称之为Worker线程。Worker主要作用是为应用程序提供一...
文章目录概要技术细节小结概要支持横向、纵向双向滑动的列表控件。实现思路是:1、在封装的控件内实现首行布局,第一列为固定列,不可滑动,其它列通过Scroll组件包裹,实现横向滑动。2、数据列通过List组件包裹,实现纵向滑动。数据通过LazyForEach实现懒加载,行布局第一列为固定列,不可滑动,其它列通过Scroll组件包裹,实现横向滑动。为了APP可以自定义数据列样式,因此通过定义Builder参数,由调...
文章目录概要整体架构流程技术细节小结概要以前在做安卓APP开发时,使用“com.readystatesoftware.chuck”SDK,监听Http请求和应答数据,非常方便便捷,因此最近在做鸿蒙项目时,想实现类似的功能,于是就封装了一个类似功能的SDK。整体架构流程1、SDK实现接口列表和接口详情页面,列表页可通过文字筛选,详情页展示请求参数和应答数据的详细信息;2、在通知栏展示最新调用的接口,点...
文章目录概要整体架构流程技术名词解释技术细节小结概要使用ArkTS在HarmonyNext系统上,实现图片增加文字水印整体架构流程1、使用Stack组件作为根容器,并设置id为“root”Stack(){Image(this.bgImg).width('100%').draggable(false).objectFit(ImageFit.Contain).onAreaChange((oldArea:Area,newArea:Area)>{if((oldArea.width!newArea.widtholdArea.height!newArea.height)&&newArea...