当前位置: 首页 > 科技观察

鸿蒙HarmonyOS三方软件开发指南(一)-PrecentPositionLayout

时间:2023-03-20 21:27:08 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz1。PrecentPositionLayout功能介绍1.1.组件介绍:SDK提供了不同布局规范的组件容器,如单一方向排列的DirectionalLayout、相对位置排列的DependentLayout、精确位置排列的PositionLayout。PositionLayout中组件的位置是以绝对像素定义的,无法适应屏幕的大小。因此引入了一个以百分比定义的PrecentPositionLayout布局容器,通过它可以轻松实现屏幕适配。1.2.在手机模拟器上运行效果:2.如何使用PrecentPositionLayout2.1。新建一个项目,在application模块中添加调用HAR的组件Har包依赖,将precentpositionlayout.har复制到entry\libs目录即可(由于build.gradle已经依赖libs目录下的*.har,所以不用需要修改)。2.2.修改主页面布局文件修改主页面布局文件ability_main.xml,修改heel组件容器为com.isoftstone.precentpositionlayout.PrecentPositionLayout,然后添加5个Text组件,分别位于左上角,屏幕的左下角和右上角。右下方和中间,每个组件的长度和宽度均为屏幕的25%。修改后代码如下:2.3。添加Text组件的背景资源文件,方便观察,上一步我们将Text组件设置一个绘图背景graphic:background_text,这里需要在resources/base/grahic目录下添加一个drawable资源文件。右键单击图形,选择新建文件,然后输入background_text.xml作为文件名。文件内容如下:(可以复制background_ability_main.xml的内容,修改颜色值)2.4.修改MainAbilitySlince的UI加载代码在MainAbilitySlince类的onStart函数中,添加如下代码。publicvoidonStart(Intentintent){super.onStart(intent);//解析xml得到PrecentPositionLayout对象PrecentPositionLayoutprecentPositionLayout=(PrecentPositionLayout)LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_ability_main,null,false);//自动调整componentPercentageprecentPositionLayout.AutoSize();//设置为UIsuper.setUIContent(precentPositionLayout);//super.setUIContent(ResourceTable.Layout_ability_main);}3.PrecentPositionLayout的开发与实现3.1。新建Module新建Module,type选择HarmonyOSLibrary,module名称为precentpositionlayout,如图:3.2.新建PrecentPositionLayout类新建PrecentPositionLayout类,继承自PositionLayout类,添加AutoSize()方法。/*调整各个组件的大小,按照百分比调整*将原组件的起始位置、宽高作为相对于整个屏幕的百分比值,然后根据屏幕分辨率转换为实际的像素值。*注:考虑到使用0-100配置百分比,范围太小不够准确,所以配置范围设置为0-1000,*例如当前屏幕为1920*1060,宽和组件的高度配置为200,则表示该组件的宽和高都占整个屏幕的20%。*因此调整后组件的实际大小为384*212。*/publicvoidAutoSize(){//获取屏幕分辨率Optionaldisplay=DisplayManager.getInstance().getDefaultDisplay(this.getContext());Pointpt=newPoint();display.get().getSize(pt);//去掉上方标题栏和下方导航栏的高度pt.modify(pt.getPointX(),pt.getPointY()-160);//增加每个组件的大小intchildCount=getChildCount();for(inti=0;ibulid>outputs>har目录下获取生成的HAR包。项目源码地址:https://github.com/isoftstone-dev/PersentPositionLayout_HarmonOS?版权归作者及HarmonyOS技术社区所有。如需转载请注明出处,否则将追究法律责任。更多信息请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz