更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz1。LoadingView组件功能介绍1.1.功能介绍:LoadingView组件是一个可以展示加载动画的三方组件,目前支持4种展示风格。1.2.在模拟器上运行的效果:2.LoadingView的使用方法2.1。新建一个项目,在application模块中添加组件Har包依赖添加HAR,只需将precentpositionlayout.har和loadingview.har复制到entry\libs目录下(由于build.gradle已经依赖了libs目录下的*.har),无需修改)。2.2.修改主页面布局文件修改主页面布局文件ability_main.xml,将根组件容器改为com.isoftstone.precentpositionlayout.PrecentPositionLayout,然后添加4个com.isoftstone.loadingview.LoadingView组件,分别位于分别在屏幕左上角、左下角、右上角、右下角,每个组件占屏幕长度和宽度的50%。修改后代码如下:2.3。修改MainAbilitySlince的UI加载代码在MainAbilitySlince类的onStart函数中,添加如下代码@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);PrecentPositionLayoutprecentPositionLayout=(PrecentPositionLayout)findComponentById(ResourceTable.Id_layout_main);precentPositionLayout.AutoSize();LoadingViewloadingView1=(LoadingView)findComponentById(ResourceTable.Id_text_helloworld));loadingView1.SetType(LoadingView.LoadingViewType.WATER);loadingView1.addDrawTask(loadingView1);LoadingViewloadingView2=(LoadingView)findComponentById(ResourceTable.Id_text_helloworld2);loadingView2.SetType(LoadingView.LoadingViewType.BALLOON);loadingView2.addDrawTask(loadingView2);LoadingViewloadingView3=(LoadingView)findComponentById(ResourceTable.Id_text_helloworld3);loadingView3.SetType(LoadingView.LoadingViewType.FISH);loadingView3.addDrawTask(loadingView3);LoadingViewloadingView4=(LoadingView)findComponentById(ResourceTable.Id_text_helloworld4);loadingView4.SetType(LoadingViewType.LoadingView.LoadingView)CIRCLE);loadingView4.addDrawTask(loadingView4);}3.LoadingView开发与实现3.1.新建Module新建Module,类型选择HarmonyOSLibrary,模块名称为loadingview,如图3.2所示。新建一个LoadingView类新建一个LoadingView类,继承自Component类,实现了Component.DrawTast接口,并重写了onDraw方法。代码如下://drawingclassprivateLoadingRanderloadingRander;@OverridepublicvoidonDraw(Componentcomponent,Canvascanvas){//获取组件大小并绘制DimensFloatpt=getComponentSize();Rectrect=newRect(0,0,pt.getSizeXToInt(),pt.getSizeYToInt());loadingRander.draw(canvas,rect);}为了实现动画,需要定义一个AnimatorValue并设置动画监听回调函数,代码如下://AnimationprivateAnimatorValueanimatorValue;//动画监听函数privatefinalAnimatorValue.ValueUpdateListenrmAnimatorUpdateListener=newAnimatorValue.ValueUpdateListener(){@OverridepublicvoidonUpdate(AnimatorValueanimatorValue,floatv){if(loadingRander!=null){loadingRander.setProgess};valid(});privatevoidinit(){//开始动画animatorValue=newAnimatorValue();animatorValue.setCurveType(Animator.CurveType.LINEAR);animatorValue.setDelay(100);animatorValue.setLoopedCount(AnimatorValue.setLoopedCount(AnimatorValue.setLoopedCount(AnimatorValue.setLoopedCount)imator.INFINITE);animatorValue.setDuration(2000);animatorValue.setValueUpdateListener(mAnimatorUpdateListener);animatorValue.start();}添加一个集合类型函数SetType,代码如下publicenumLoadingViewType{//支持类型WATER,BALLOON,FISH,CIRCLE;}//设置动画类型caseCIRCLE:loadingRander=newLoadingRanderCircle();break;default:returnfalse;}returntrue;}3.3。新建一个LoadingRander类LoadingRander是动画绘制的基类,它有两个对外接口,代码如下(){}//设置进度publicvoidsetProgess(floatprogress){mProgress=progress;}//Drawprotectedvoid绘制(Canvascanvas,Rectbounds){return;}}3.4。创建LoadingRender的四个子类,分别完成四种动画风格的绘制(重写基类的draw函数)。3.5.编译HAR包使用Gradle,可以将HarmonyOSLibrary库模块编译成HAR包。构建HAR包的方法如下:在Gradle构建任务中,双击PackageDebugHar或PackageReleaseHar任务,构建一个Debug类型或Release类型的HAR。构建任务完成后,可以在loadingview>build>outputs>har目录下获取生成的HAR包。项目源码地址:https://github.com/isoftstone-dev/LoadingView_HarmonyOS?版权归作者及HarmonyOS技术社区所有。如需转载请注明出处,否则将追究法律责任。更多信息请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz