“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第12期

“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第12期 向所有参与社区互助的开发者致以最诚挚的感谢!

特别感谢本期优质答复贡献者:@乌拉大乌拉、@GeorgeGcs、@我叫张永宽

社区的蓬勃发展,离不开每一位积极参与者的贡献。本期“答开发者问”栏目,精选自广大热心开发者针对提问帖所贡献的众多优质答复之中。它们不仅是智慧与经验的璀璨结晶,更是“众人拾柴火焰高”这一真理的生动体现。

在此,我们由衷地感谢每一位热心参与、乐于分享的开发者,是你们的热情与智慧,让这个社区充满了生机与活力,每一次的解答都是对技术探索精神的最好诠释。同时,我们也诚挚邀请更多的开发者加入到这场智慧碰撞的盛宴中来。无论是抛出难题寻求解答,还是慷慨解囊分享经验,您的每一份参与都将为鸿蒙开发者社区注入新的活力,推动我们共同前行,在技术的海洋中扬帆远航。

本期问题如下:

  1. 怎样适配 Pura X 的外屏?
  2. h5链接在HarmonyOS上无法正常展示?
  3. bindpopup设置popupColor属性不生效?
  4. 如何对应用进行冷启动优化?
  5. AlertDialog.show()中message的字体大小和颜色如何修改?

答开发者问系列汇总:

“答开发者问”系列汇总(持续更新中…)

往期问题回顾:

"答开发者问"之HarmonyOS技术问题解析 第1期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第2期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第3期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第4期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第5期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第6期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第7期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第8期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第9期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第10期-华为开发者问答 | 华为开发者联盟 (huawei.com)

"答开发者问"之HarmonyOS技术问题解析 第11期-华为开发者问答 | 华为开发者联盟 (huawei.com)

注意:

开发者小伙伴们,规范提问,高效沟通!更快得到问题答案的秘诀来啦,点击链接直达


更多关于“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第12期的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

问题五:AlertDialog.show()中message的字体大小和颜色如何修改?

AlertDialog.show()中不能修改message里内容的字体颜色和大小,请问如何解决?样例代码如下:

AlertDialog.show({
  message:`我是${txt}`,
  backgroundColor:`${color}`,
  textStyle:{
    fontColor:Color.White,
    fontSize:25
  }
})

解决方案:

AlertDialog无法修改自定义字体颜色和大小。建议使用coustomDialog,示例代码如下:

// xxx.ets
@CustomDialog
struct CustomDialogExample {
  controller?: CustomDialogController
  build(){
    Column () {
      Text('这是自定义弹窗')
        .fontSize(30)
        .fontColor(Color.Red)
        .height(100)
      Button('点我关闭弹窗')
        .onClick(() => {
          if (this.controller != undefined) {
            this.controller.close()
          }
        })
        .margin(20)
    }
  }
}
@Entry
@Component
struct CustomDialogUser {
  dialogController: CustomDialogController | null = new CustomDialogController({
    builder: CustomDialogExample({
    })
  })

  build(){
    Column () {
      Button('click me')
        .onClick(() => {
          if (this.dialogController != null) {
            this.dialogController.open()
          }
        }).backgroundColor(0x317aff)
    }.width('100%').margin({ top: 5 })
  }
}

原链接: AlertDialog.show()中message的字体大小和颜色怎么修改呢?-华为开发者问答 | 华为开发者联盟 (huawei.com)

更多关于“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第12期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题四:如何对应用进行冷启动优化?

是否有冷启动的优化方案?当前应用冷启动需要8s时间,其中entryAbility启动就花费了7s的时间,想要整体优化到4-6s,有什么好的建议吗?

解决方案:

可以从以下几点去进行排查优化:

  • 检查全部启动功能,lazy掉可以延后启动的部分。
  • 减少启动资源。
  • 优化启动后第一页面main或splash页面。
  • 理清可并行启动的部分,使用startup,将任务粒度化,并行加载。

具体可以参考官网的冷启动优化的文章:提升应用冷启动速度

原链接: 大佬们有冷启动的优化经验吗?-华为开发者问答 | 华为开发者联盟 (huawei.com)

问题三:bindpopup设置popupColor属性不生效?

bindpopup绑定在被foreach循环多次的组件上,气泡颜色(popupColor)设置成黑色但未生效,导致白色字体显示不清晰,demo代码如下:

@Entry
@Component
struct BindPopup {
  @State message: string = 'Hello World';
  @State longPress:string=''
  @State lists:string[]=["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",'16','17','18','19','20','21','22','23','24','25','26']

  @Builder longBindPopup(){
    Column(){
      Text('编辑')
        .fontColor(Color.White)
    }
  }

  build() {
    Column () {
      Grid(){
        ForEach(this.lists,(item:string)=>{
          GridItem(){
            Text(this.message)
              .fontSize(15)
              .width(100)
              .height(30)
              .margin({top:20})
              .fontWeight(FontWeight.Bold)

          }
          .parallelGesture(GestureGroup(GestureMode.Exclusive,
            LongPressGesture({ repeat: true })
              .onAction(() =>{
                this.longPress=item
              }),
          ))
          .bindPopup(this.longPress===item,{
            builder:this.longBindPopup(),
            width:50,
            popupColor:('rgba(0,0,0,0.80)')
          })
        })
      }

    }
    .height('100%')
    .width('100%')
  }
}

解决方案:

bindpopup中可以通过popupColor设置提示气泡的颜色,需要设置backgroundBlurStyle属性为BlurStyle.NONE关闭默认模糊后方可清楚展示设置的颜色,demo如下:

@Entry
@Component
struct BindPopup {
  @State message: string = 'Hello World';
  @State longPress:string=''
  @State lists:string[]=["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",'16','17','18','19','20','21','22','23','24','25','26"]

  @Builder longBindPopup(){
    Column(){
      Text('编辑')
        .fontColor(Color.White)
    }
  }

  build() {
    Column () {
      Grid(){
        ForEach(this.lists,(item:string)=>{
          GridItem(){
            Text(this.message)
              .fontSize(15)
              .width(100)
              .height(30)
              .margin({top:20})
              .fontWeight(FontWeight.Bold)

          }
          .parallelGesture(GestureGroup(GestureMode.Exclusive,
            LongPressGesture({ repeat: true })
              .onAction(() =>{
                this.longPress=item
              }),
          ))
          .bindPopup(this.longPress===item,{
            builder:this.longBindPopup(),
            width:50,
            popupColor:('rgba(0,0,0,0.80)'),
            backgroundBlurStyle:BlurStyle.NONE
          })
        })
      }

    }
    .height('100%')
    .width('100%')
  }
}

原链接: bindpopup绑定在被foreach循环多次的组件上,bindpopup会出现多次,气泡颜色(popupColor)是黑色比较明显,怎么解决-华为开发者问答 | 华为开发者联盟 (huawei.com)

问题二:h5链接在HarmonyOS上无法正常展示?

h5链接在ios和安卓上可以正常展示,但是在HarmonyOS上无法展示。

解决方案:

需要设置是否开启文档对象模型存储接口(DOM Storage API)权限,该权限默认未开启false,改成true即可开启,参考demo:

// xxx.ets
import { webview } from '@kit.ArkWeb';

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Web({
        src: "https://public.health.zoenet.cn/medical/consultation-guidelines/consultation-guidelines?appCode=HC_XMDYYY_HMS&orgCode=426600660",
        controller: this.controller
      })
        .domStorageAccess(true)
    }
  }
}

原链接

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

问题一:怎样适配 Pura X 的外屏?

应用要怎样适配 Pura X 的外屏并在外屏显示?

解决方案:

Pura X适配可以参考官方适配指导

目前内屏可以通过真机或者模拟器来进行调试,但是外屏目前不支持真机调试,只能通过模拟器来调试。模拟器目前仅对部分应用开放,且需要向华为官方申请。

应用在外屏显示需要开发者首先完成对应用外屏的适配,然后向华为官方申请外屏上架,评审通过后会添加白名单,之后应用就可以在外屏展示。

原链接:

怎样适配 Pura X 的外屏?-华为开发者问答 | 华为开发者联盟 (huawei.com)

在“答开发者问”之HarmonyOS鸿蒙Next技术问题解析第12期中,主要探讨了鸿蒙Next在分布式能力、性能优化及开发者工具方面的最新进展。鸿蒙Next通过增强的分布式数据管理,实现了跨设备数据无缝流转,提升了多设备协同效率。性能优化方面,重点介绍了内存管理和任务调度的改进,显著提升了系统响应速度和资源利用率。此外,开发者工具如DevEco Studio的更新,提供了更强大的调试和测试功能,助力开发者高效构建应用。

回到顶部