鸿蒙开源第三方组件迁移-加载动画库加载动画库AVLoadingIndicatorView(https://github.com/81813780/AVLoadingIndicatorView),实现鸿蒙迁移和重构,代码已经开源到(https://github.com/81813780/AVLoadingIndicatorView)/gitee.com/iscas-ohos/avloading-indicator-view_ohos.git),欢迎大家下载使用并提出宝贵意见!后台服务器在加载数据时有时需要等待一段时间。加载动画可以缓解用户在等待过程中的焦虑情绪,让等待过程更加友好流畅。AVLoadingIndicatorView是一个开源的加载动画库,通过调用动画库可以实现各种加载效果。组件功能展示1.动画效果在Android原版中,该组件库中有28个加载动画,鸿蒙版组件库成功实现了其中的21个。由于鸿蒙系统缺少部分API函数,目前还有7个动画效果没有成功迁移。图1AVLoadingIndicatorView效果示意图图1为鸿蒙平台AVLoadingIndicatorView的动画效果展示,分为6行4列。Thecorrespondingnamesoftheanimationeffects(fromlefttoright)areasfollows:Row1BallPulseIndicator,BallGridPulseIndicator,BallClipRotateIndicator,BallClipRotatePulseIndicatorRow2PacmanIndicator,BallClipRotateMultipleIndicator,SemiCircleSpinIndicator,BallRotateIndicatorRow3BallScaleIndicator,LineScaleIndicator,LineScalePartyIndi??cator,BallScaleMultipleIndicatorRow4BallPulseSyncIndicator,BallBeatIndicator,LineScalePulseOutIndicator,LineScalePulseOutRapidIndicatorRow5BallScaleRippleIndicator,BallScaleRippleMultipleIndicator,BallSpinFadeLoaderIndicator,LineSpinFadeLoaderIndicatorRow6BallGridBeatIndicator2.动画控制效果AVLoadingIndicatorView组件支持对加载动画的效果进行控制,控制有4种类型:动画开始、动画停止、动画显示和动画隐藏。动画开始和动画停止是相互关联的,它们用来控制动画是否运行;动画显示和动画隐藏是相互关联的,都用来控制动画是否出现,控制效果如图2所示。图2四种效果控件示例分析示意图该组件库中的每一种动画都有四种控制效果:开始、停止、隐藏和显示。为了方便调试和演示,Sample中将所有的动画对象放在同一个列表中,并用四个不同的按钮控制所有动画同时开始、停止、隐藏和显示,效果如图2所示.下面介绍控制所有动画同时启动、停止、隐藏和显示的步骤:1、导入AVLoadingIndicatorView类importcom.wang.avi.AVLoadingIndicatorView;2、给Layout添加动画这里需要把所有的动画都添加到Layout中,并且把每个动画都放在同一个列表(也就是代码中的animatorList)的对象中。//以BallPulseIndicator为例myLayout.addComponent(ballPulseIndicator);//将BallPulseIndicator添加到LayoutanimatorList.add(ballPulseIndicator);//将BallPulseIndicator对象放入列表//以BallGridPulseIndicator为例myLayout.addComponent(ballGridPulsePulseIndicator);animatorGrid.添加(seball);3。设置四个按钮控制所有动画同时开始、停止、隐藏和显示。以“开始”效果为例,startBtn按钮设置了Click监听器,当按钮被按下时,会执行startAllAnimator()方法。startAllAnimator()方法使用for循环遍历animatorList中的每一个动画对象,调用每一个对象的start()方法,达到开始动画的效果。//按钮监听startBtn.setClickedListener(component->startAllAnimator(animatorList));//启动endBtn.setClickedListener(component->stopAllAnimator(animatorList));//停止hideBtn.setClickedListener(component->hideAllAnimator(animatorList));//hiddenshowBtn.setClickedListener(component->showAllAnimator(animatorList));//显示//startprivatevoidstartAllAnimator(ArrayList
