HarmonyOS 鸿蒙Next<第一课>“营”在暑期:Codelabs挑战赛+音乐专辑】 基于自适应布局和响应式布局的多端部署开发

HarmonyOS 鸿蒙Next<第一课>“营”在暑期:Codelabs挑战赛+音乐专辑】 基于自适应布局和响应式布局的多端部署开发 1 作品展示

2023-09-06-19-42-31.gif

2023-09-06-19-43-32.gif

2 开发工具

  • 工具:devstudio3.1 release
  • 模型:stage
  • 语言:ArkTS
  • sdk:API9

3 自适应式布局和响应式布局

  • 自适应式布局主要依赖多态组件能力,有拉伸、均分、占比、缩放、延伸、隐藏和折行。主要有list组件、image组件、text组件、blank组件等。
Stack() {
  Image(item.icon)
    .width(StyleConstants.FULL_WIDTH)
    .height($r('app.float.item_height'))
    .borderRadius($r('app.float.item_border_radius'))
  Column() {
    Text(item.title)
      .fontSize($r('app.float.title_font_size'))
      .fontColor(Color.White)
    Text(item.description)
      .fontSize($r('app.float.description_font_size'))
      .opacity(HomeConstants.TEXT_OPACITY)
      .fontColor(Color.White)
      .margin({
        top: $r('app.float.description_margin_top')
      })
    Blank()
    Column() {
      Button() {
        Text(item.button)
          .fontSize($r('app.float.button_font_size'))
          .fontColor(Color.White)
      }
      .backgroundColor($r('app.color.button_background_color'))
      .borderRadius($r('app.float.button_border_radius'))
      .width($r('app.float.button_width'))
      .height($r('app.float.button_height'))
      .onClick(() => {
        router.pushUrl({
          url: item.url
        }, router.RouterMode.Single);
      })
    }
    .alignItems(HorizontalAlign.End)
    .width(StyleConstants.FULL_WIDTH)
  }
  .width(StyleConstants.FULL_WIDTH)
  .height($r('app.float.item_height'))
  .borderRadius($r('app.float.item_border_radius'))
  .padding($r('app.float.item_padding'))
  .alignItems(HorizontalAlign.Start)
  .justifyContent(FlexAlign.SpaceBetween)
}

响应式布局采用断点、媒体查询和栅格方式进行布局。主要根据显示尺寸划分成不同的大小区域设计显示,然后根据媒体查询确定设备的显示效果。

GridRow({
  breakpoints: {
    value: BreakpointConstants.BREAKPOINT_VALUE,
    reference: BreakpointsReference.WindowSize
  },
  columns: {
    sm: BreakpointConstants.COLUMN_SM,
    md: BreakpointConstants.COLUMN_MD,
    lg: BreakpointConstants.COLUMN_LG
  },
  gutter: { x: BreakpointConstants.GUTTER_X },
  direction: GridRowDirection.Row
}) {
  GridCol({
    span: {
      sm: BreakpointConstants.SPAN_SM,
      md: BreakpointConstants.SPAN_MD,
      lg: BreakpointConstants.SPAN_LG
    },
    offset: {
      md: BreakpointConstants.OFFSET_MD,
      lg: BreakpointConstants.OFFSET_LG
    }
  })

4 多端部署设计

  • 多端部署有归一化打包和分类打包两种方式。归一化打包模式指对于泛类采用打一个包的模式部署,即对不同的设备用同一个包进行部署;分类打包指根据设备类的能力分别打包,可以通过对设备能力的检测对功能代码进行裁剪以生成不同要求的应用包。
  • 本应用采用归一化的打包方式,可以把同一个应用包部署到不同的设备上。

5 其他

  • 由于API9的设备较少,因此展示采用了横竖屏的方式展示。

更多关于HarmonyOS 鸿蒙Next<第一课>“营”在暑期:Codelabs挑战赛+音乐专辑】 基于自适应布局和响应式布局的多端部署开发的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

1

更多关于HarmonyOS 鸿蒙Next<第一课>“营”在暑期:Codelabs挑战赛+音乐专辑】 基于自适应布局和响应式布局的多端部署开发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


您好 0基础学这个需要学习哪些知识?

我觉作为码农,就在实践中学习,遇到什么问题学什么,如果想规划的话,那就复杂了。

收到!赞!

建议在原活动贴下回复跟帖,方便后续统计哦

https://developer.huawei.com/consumer/cn/forum/topic/0202126442505871313?fid=0101562279236410779

找不到活动地址了,

HarmonyOS Next的“营”在暑期活动中,通过Codelabs挑战赛和音乐专辑的开发,展示了基于自适应布局和响应式布局的多端部署能力。自适应布局和响应式布局是HarmonyOS中用于实现跨设备一致用户体验的关键技术。

自适应布局:通过使用HarmonyOS提供的布局组件,如DirectionalLayoutDependentLayout等,开发者可以定义不同设备尺寸下的布局规则。自适应布局允许应用根据屏幕尺寸自动调整UI元素的排列和大小,确保在不同设备上都能保持良好的视觉效果。

响应式布局:响应式布局则通过@ohos.mediaquery模块实现,允许开发者根据设备的屏幕尺寸、方向等属性动态调整UI布局。通过媒体查询,开发者可以定义不同设备条件下的样式和布局,从而实现更灵活的UI适配。

在多端部署中,HarmonyOS提供了AbilityPage的概念,支持在手机、平板、智慧屏等不同设备上运行同一套代码。开发者可以通过@ohos.router模块实现页面路由,结合自适应和响应式布局,确保应用在不同设备上都能提供一致的用户体验。

在音乐专辑的开发中,开发者可以利用HarmonyOS的多媒体能力,如@ohos.multimedia.audio模块,实现音频播放、暂停、跳转等功能。同时,结合自适应布局和响应式布局,确保音乐播放界面在不同设备上都能良好展示。

通过Codelabs挑战赛,开发者可以实践这些技术,掌握在HarmonyOS上进行多端部署开发的方法,提升应用的跨设备兼容性和用户体验。

回到顶部