HarmonyOS 鸿蒙Next应用“丁斗口算”开发记录(6)
HarmonyOS 鸿蒙Next应用“丁斗口算”开发记录(6)
第六节 自适应拉伸1
上一节将题目页面做了分割设计,页面分为上下两部分,上部高度固定,下部自适应拉伸。使用Flex组件实现,Flex组件的接口direction属性设为direction:FlexDirection.Column,实现纵向排列,宽度和高度占满屏幕。上部组件的高度设为固定值,设置下部组件的.flexGrow属性即可实现
Flex({direction:FlexDirection.Column}) {
Row()// 头部自适应延申
.height(‘38vp’)
.width(‘100%’)
Row() // 主要区域
.width(‘100%’)
.flexGrow(2)
}
.height(‘100%’)
.width(‘100%’)
上部标题部分的自适应拉伸。根据显示内容和屏幕情况,可以发现,只要高度恒定,宽度自适应伸缩,文字尺寸和图片尺寸保持不变即可。如下
手机竖屏
平板横屏
实现方法,整个头部用一个Row组件放置,高度恒定,宽度占满屏幕。根据屏幕方向,需要避让相机挖空,所以设置不同的padding。该组件内再放置三个组件,分别是左侧的‘返回’,中间的计数,以及右侧的计时。这三个组件占满宽度方向,中间的间距是自适应的。因此,设置Row组件的justifyContent主轴对齐属性为FlexAlign.SpaceBetween。
左侧的返回,包括一个图片和几个文字,使用Row组件包含一个Image组件和一个Text组件实现。Text的内容是根据题目类型确定的,再首页跳转到题目页时,同时传递参数过来,修改this.title变量实现标题的显示。
计数部分包括重做次数和显示答案次数,使用Column组件实现。Column组件内包括两个Text组件。
计时组件同样包括一个图片和文字,用一个Row组件放置。使用TextTimerController实现计时功能
代码如下:
aboutToAppear(): void {
this.title = EquationTypeList[this.index].TypeTitle;
this.name = EquationTypeList[this.index].TypeName;
}
Row()
{ // 头部–自适应拉伸
Row() {
Image($r(‘app.media.ic_public_arrow_left’))
.width(20)
.height(20)
.onClick(() => {
router.back();
})
Text(this.title)
.fontSize(18)
.fontWeight(FontWeight.Bold)
} // 返回箭头及标题
.height(‘100%’)
Column() {
Text(‘重做次数:’ + this.reCalCount.toString())
.fontSize(12)
.textAlign(TextAlign.End)
Text(‘显示答案次数:’ + this.dispRltCount.toString())
.fontSize(12)
.textAlign(TextAlign.End)
} // 计数
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.SpaceAround)
.height(‘100%’)
Row() {
Image($r(‘app.media.ic_public_stopwatch’))
.width(18)
.height(18)
.margin({ right: 5 })
TextTimer({ isCountDown: false, count: 300000, controller: this.textTimerController })
.format(this.format)
.fontColor(Color.Black)
.fontSize(12)
.onTimer((utc: number, elapsedTime: number) => {
this.countTime = elapsedTime;
})
} // 计时
.justifyContent(FlexAlign.Start)
.alignItems(VerticalAlign.Center)
} // 头部自适应延申
.height(‘38vp’)
.width(‘100%’)
.padding(this.Orient_V?{ left: 10, right: 10 }:{left:35,right:35})
.justifyContent(FlexAlign.SpaceBetween)
.alignItems(VerticalAlign.Center)
.margin({ top: 5, left: 5, right: 5 })
在HarmonyOS鸿蒙系统中开发“丁斗口算”应用时,会遇到一系列技术挑战与实现细节。以下针对开发记录(6)可能涉及的几个关键点进行专业概述:
-
UI适配与优化:确保应用界面在不同屏幕尺寸与分辨率的鸿蒙设备上均能良好展示。利用鸿蒙系统提供的UI框架,如ArkUI,实现响应式布局,提升用户体验。
-
性能调优:针对口算功能的计算效率进行优化,避免长时间等待。利用鸿蒙的多线程机制,将耗时任务放在后台线程处理,保持主线程流畅。
-
数据持久化:实现用户学习进度、口算记录等数据的有效存储与恢复。考虑使用鸿蒙提供的分布式数据库服务,实现跨设备的数据同步。
-
安全机制:加强应用的数据安全,如对用户输入、计算结果进行加密处理。利用鸿蒙的安全框架,确保应用免受恶意攻击。
-
兼容性测试:在多个鸿蒙版本与设备上进行充分测试,确保应用的广泛兼容性。
-
用户反馈收集:集成鸿蒙的反馈系统,及时收集用户意见,持续优化应用。
以上是基于鸿蒙系统开发应用时的一些通用建议。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。