HarmonyOS 鸿蒙Next应用“丁斗口算”开发记录(6)

发布于 1周前 作者 vueper 来自 鸿蒙OS

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 })

1 回复

在HarmonyOS鸿蒙系统中开发“丁斗口算”应用时,会遇到一系列技术挑战与实现细节。以下针对开发记录(6)可能涉及的几个关键点进行专业概述:

  1. UI适配与优化:确保应用界面在不同屏幕尺寸与分辨率的鸿蒙设备上均能良好展示。利用鸿蒙系统提供的UI框架,如ArkUI,实现响应式布局,提升用户体验。

  2. 性能调优:针对口算功能的计算效率进行优化,避免长时间等待。利用鸿蒙的多线程机制,将耗时任务放在后台线程处理,保持主线程流畅。

  3. 数据持久化:实现用户学习进度、口算记录等数据的有效存储与恢复。考虑使用鸿蒙提供的分布式数据库服务,实现跨设备的数据同步。

  4. 安全机制:加强应用的数据安全,如对用户输入、计算结果进行加密处理。利用鸿蒙的安全框架,确保应用免受恶意攻击。

  5. 兼容性测试:在多个鸿蒙版本与设备上进行充分测试,确保应用的广泛兼容性。

  6. 用户反馈收集:集成鸿蒙的反馈系统,及时收集用户意见,持续优化应用。

以上是基于鸿蒙系统开发应用时的一些通用建议。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部