HDC2021技术分论坛:ArkUI 3.0让多设备开发更简单

HarmonyOS"一次开发,多端部署"优秀实践——玩机技巧,码上起航 随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间按需调用、互助共享,让用户享受无缝的全场景体验。作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。... 阅读详情

作者:wanglei,华为UI编程框架技术专家

HarmonyOS自诞生以来,就是为满足分布式多设备应用场景而设计的,大到智慧屏、车机、平板,小到手机、手表。在多设备场景下进行应用UI界面开发,面临新的困难与挑战,如下图所示:

​图1 多设备开发的挑战

为了使UI界面在色彩风格、屏幕尺寸、交互方式和组件功能等差异下仍能够正常显示,无疑需要开发人员花费大量精力在UI适配。开发人员常常需要实现多套界面布局(甚至多套工程),来满足不同设备间的设计差异。即使页面差异不大,也需要进行多设备测试,多次打包编译在设备或者模拟器上运行查看效果。后期维护过程中也需要不断查看不同设备下的兼容性,这些都极大地增加了应用开发者的工作量。

为了解决上述问题,简化开发者在多设备上的开发调试成本,我们提出了一次开发多端部署的设计理念,实现通过一套工程代码,一次开发上架,即可按需部署到不同设备。为了实现这一目标,我们从Harmony系统能力、ArkUI 3.0框架能力和开发工具能力三个方面,为开发者提供了多种适配方法和能力。

下面将一一为大家介绍。

目录

一、HarmonyOS系统能力

二、ArkUI 3.0框架能力

三、开发工具能力

四、结束语


一、HarmonyOS系统能力


首先介绍一下系统层面提供的能力。系统能力无需开发者进行页面调整,也无需进行业务逻辑调整,仅通过增加简单的几行配置描述,即可由系统进行多设备适配。系统能力与开发范式无关,因此在新的UI编程框架下仍可使用。下面我们依次介绍两种系统能力:模拟小窗和平行视界。

1. 模拟小窗

模拟小窗是最常用也是最简单的一种多设备适配方式,通过利用系统的悬浮窗能力,将低分辨率的应用,以悬浮窗口的形式在高分辨率屏幕上进行显示。常见的使用场景是手机应用在平板或PC上运行的场景,如下图所示:

图2 模拟小窗

模拟小窗的使用方式非常简单,只需在项目中config.json文件中增加两条描述,分别配置好应用的目标设备类型和响应的窗口尺寸,即可将低分辨率的应用运行在高分辨率设备上。示例代码如下:

{
  “app”: {
    ...
    “smartWindowSize”:“360*640”,
    “smartWindowDeviceType”: [
      “tablet”
    ]
  },
  ...
}

这种使用方式能够良好地保证我们应用的展示效果和原始平台效果是一致的,无需开发者进行额外的界面的适配。但是这种方式也有局限,最显著的问题就是没有办法利用全部高分辨率的屏幕,整个屏幕内展示的数据量没有因屏幕分辨率的增加而增大,造成了屏幕上空间的浪费。为解决此问题,系统提供了另一种适配方案——平行视界。

2. 平行视界

系统针对折叠屏、平板设备提供了平行视界的能力,借助分屏显示的思想,将屏幕分为左右两个部分,分别显示应用相关联的两个页面内容。这样每个区域都能够保持良好的界面显示效果,也增加了屏幕内的有效数据量,良好地利用了屏幕显示区域。常用于新闻、购物类的场景,将相关的两个页面同时显示,如下图所示:

图3 平行视界

使用平行视界时,首先需要在config.json文件中配置metaData,声明支持平行视界。同时,还需要增加easygo.json文件进行页面路由关系配置,指导系统进行分屏显示。

平行视界的详细使用说明,可参考官网:

文档中心

二、ArkUI 3.0框架能力


上述两种是通过配置即可实现的多端适配方案,使用简单,但是使用场景比较受限。为了更加精准地适配多设备界面,ArkUI 3.0框架提供了媒体查询、多态控件、原子布局和栅格系统,方便开发者选择合适的能力进行UI界面构建。

1. 媒体查询

媒体查询是CSS提供的标准能力,是响应式Web设计的关键部分。在新的UI范式中仍保留了此能力,作为最基础的UI响应式设计能力。在新的UI范式中,通过API接口方式对外提供媒体查询能力,可以探查的范围包括页面尺寸、设备分辨率、屏幕方向、页面宽高比、屏幕尺寸、设备类型、屏幕类型和主题模式。开发者可以根据不同的查询结果,进行定制化处理。比如:当屏幕方向变化时,可以调整界面内布局样式和组件显示效果;也可以根据设备类型不同,控制组件的显示和隐藏;并且当查询状态发生变化时,提供事件通知。

图4 媒体查询

2. 多态组件

UI界面构建离不开组件的使用。ArkUI 3.0框架为开发者提供了多态组件,通过组件将不同设备的样式风格和交互方式进行封装,替开发者完成大部分适配相关工作。开发者在使用多态组件时,无需考虑设备差异,只需关注功能实现即可。

下面通过一个示例来看看,相同的一套开发代码在手机、智慧屏和车机上展示的不同效果。

图5 多态组件

示例代码如下:

Column() {
    Text("手机 / 平板")
        .margin({top: 150})
    Button("普通按钮")
        .margin({top: 40})
        .onClick(() => {
            AlertDialog.show({title: '发现新版本', message: '当前使用移动数据网络,将消耗 XXX MB流量,是否更新',
            primaryButton: {
                value: '立即更新',
                action: () => {}
            },
            secondaryButton: {
                value: '以后再说',
                action: () => {}
            }})
        })
}


产品设计人员常常不满足于使用系统默认样式,希望能够针对不同的平台使用自定义的风格样式。为了避免开发者逐个组件地进行样式调整,ArkUI 3.0框架将组件样式相关设置信息(如颜色、尺寸、圆角弧度、内容文本等)抽象出来形成了一个参数表,按照参数名称和参数值的方式进行映射。UI组件样式属性值都来自这张参数表,开发者和设计人员只需调整参数值,即可调整组件的显示效果。

3. 原子布局

多设备间差异最大的还是屏幕的分辨率,差异分辨率适配离不开自适应布局的能力。针对常见的开发场景,我们提炼了七种原子布局能力。这些布局可以独立使用,也可多种布局叠加使用。下面我们依次介绍这七种原子布局能力:

(1)折行布局:常用于横竖屏适配或手机向平板切换的场景。比如,竖直方向空间减少,但是水平方向上显示区域增加,这时可考虑使用折行布局,将竖直方向的排版变成水平方向。

图6 折行布局

折行布局利用了Flex布局的折行能力实现,配合布局约束设置,即可实现折行排布效果。示例代码如下:

Flex({direction: FlexDirection.Column, wrap: FlexWrap.Wrap}) {
    Flex({justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center}) {
      Text("First Content")
      .fontColor(Color.White)
      .fontSize(30)
    }
    .constraintSize({minWidth: '50%', minHeight: '50%', maxWidth: 400})
    .backgroundColor(Color.Gray)
    Flex({justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center}) {
      Text("Second Content")
      .fontSize(30)
      .fontColor(Color.White)
    }
    .constraintSize({minWidth: '50%', minHeight: '50%', maxWidth: 400})
    .backgroundColor('rgb(207, 171, 103)')

(2)均分布局:常用于内容数量固定、均分显示的场景,比如工具栏、底部菜单栏等。

图7 均分布局

示例代码如下:

@Entry
@Component
struct Index {
    build() {
        Flex({direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceEvenly}) {
            Text('Hello')
                .fontSize(20)
                .borderColor(Color.Red)
                .borderWidth(1)
            Text('World')
                .fontSize(20)
                .borderColor(Color.Red)
                .borderWidth(1)
            Text('Ark')
                .fontSize(20)
                .borderColor(Color.Red)
                .borderWidth(1)
            Text('UI')
                .fontSize(20)
                .borderColor(Color.Red)
                .borderWidth(1)
        }
        .width('100%')
        .height('100%')
    }
}


仅需配置为FlexAlign.SpaceEvenly模式,即可在Flex组件中将内容均分显示。

(3)隐藏布局:是一种比较高级的布局方式,常用于分辨率变化较大,且不同分辨率下显示内容有所差异的场景。主要思想是通过增加或减少显示内容,来保持最佳的显示效果。比如媒体播放控制器,在宽屏场景可以完整显示全部控制项(包含播放、暂停、上一首、下一首、快进、快退,可能还有点赞和收藏按钮等),而在低分辨率场景只保留部分控制项(比如播放、暂停、上一首、下一首按钮)。

图8 隐藏布局

隐藏布局使用方式非常简单,只需通过displayPriority方法设置显示优先级,具有相同优先级的元素会同时显示或隐藏。在进行布局计算时,会根据当前可用空间,计算当前可显示组件进行显示。示例代码如下:

Row({space: 10}) {
  Text('1')
    .width(100)
    .textAlign(TextAlign.Center)
    .fontSize(40)
    .backgroundColor(Color.Red)
    .displayPriority(2)
  Text('2')
    .width(100)
    .fontSize(40)
    .textAlign(TextAlign.Center)
    .backgroundColor(Color.Red)
    .displayPriority(1)
  Text('3')
    .width(100)
    .textAlign(TextAlign.Center)
    .fontSize(40)
    .backgroundColor(Color.Red)
    .displayPriority(3)
  Text('4')
    .width(100)
    .textAlign(TextAlign.Center)
    .fontSize(40)
    .backgroundColor(Color.Red)
    .displayPriority(1)
  Text('5')
    .width(100)
    .textAlign(TextAlign.Center)
    .fontSize(40)
    .backgroundColor(Color.Red)
    .displayPriority(2)
}


(4)占比布局:是一种很常见的布局,就是根据容器尺寸按照比例进行显示。

图9 占比布局

通过设置百分比尺寸,即可实现比例调整。示例代码如下:

@Entry
@Component
struct Index {
    build() {
        Row() {
            Text('Hello')
                .fontSize(20)
                .width('50%')
                .backgroundColor(Color.Red)
            Text('World')
                .fontSize(20)
                .width('20%')
                .backgroundColor(Color.Yellow)
            Text('Ark')
                .fontSize(20)
                .width('15%')
                .backgroundColor(Color.Green)
            Text('UI')
                .fontSize(20)
                .width('15%')
                .backgroundColor(Color.Gray)
        }
        .width('100%')
        .height('100%')
    }
}


(5)拉伸缩放布局:组件尺寸跟随父容器尺寸变化,产生拉伸或缩放的展示效果。

图10 拉伸缩放布局

通过设置相对容器的比例,实现拉伸或缩放的展示效果。示例代码如下:

Row() {
        Image($r('app.media.background'))
          .objectFit(ImageFit.Fill)
          .width('100%')
          .height('100%')
    }


(6)固定宽高比布局:在拉伸缩放时保持自身宽高比,通常用于图片缩放场景中,可保持图片显示效果正常,避免图片被拉长或压瘪,引起显示失真。 

图11 固定宽高比布局

通过设置宽高比,保持按照固定宽高比进行拉伸显示,保障图片不会产生变形。示例代码如下:

Row() {
    Image($r('app.media.background'))
      .objectFit(ImageFit.Fill)
      .width('100%')
      .height('100%')
      .aspectRatio(1.2)
}


(7)延伸布局:根据尺寸调整内容显示数量,主要是通过像列表这样的能力来实现。

图12 延伸布局

根据宽度不同,显示不同数量的内容,并且可以通过滑动操作,显示出更多内容。示例代码如下:

@Entry
@Component
struct Index {
    private data: string[] = ['Hello', 'World', 'Ark', 'UI', 'This', 'Is', 'Layout', 'Demo']
    build() {
        Flex({direction:FlexDirection.Column, justifyContent: FlexAlign.Center}) {
          List({space: 10}) {
              ForEach(this.data, (item) => {
                  ListItem() {
                      Text(item)
                        .fontSize(20)
                        .width(80)
                  }.height(80)
                  .backgroundColor(Color.Red)
              })
          }
          .listDirection(Axis.Horizontal)
          .width('100%')
          .height(100)
        }
        .width('100%')
        .height('100%')
    }
}


此示例通过List作为布局容器,进行内容线性排布,并支持滑动响应。

4. 栅格系统

ArkUI 3.0框架还提供了完整的栅格系统。所谓栅格系统是来自UX设计中的栅格设计,将屏幕宽度按照不同数量的栅格划分为不同的列,组件的尺寸占用一个或多个栅格。采用这种方式进行设计的布局系统,称之为栅格系统。使用栅格系统,可以屏蔽屏幕分辨率的差异,在不同分辨率的屏幕上保持显示内容的相对尺寸一致。

常见的栅格系统有8栅格系统和12栅格系统,而我们提供的是动态栅格系统,可以根据不同的屏幕尺寸,动态地调整栅格数量。使用动态栅格系统时,不同分辨率的设备使用不同的栅格配置,比如:手机竖屏采用4栅格系统,手机横屏和折叠屏采用8栅格系统,大屏采用12栅格系统。

图13 动态栅格系统

为了方便开发者使用,ArkUI 3.0框架提供了栅格布局容器GridContainer。下面我们来看一个示例,代码如下:

Stack() {
  GridContainer({sizeType: SizeType.Auto}) {
    Row() {
      Button('OK')
        .fontSize(30)
        .gridSpan(2)
        .useSizeType({lg: 4})
    }
  }
}


栅格布局容器可以设置为固定栅格数,也可以设置为Auto模式。此示例采用的是Auto模式,栅格布局容器会根据宽度动态调整栅格数量。同时通过useSizeType属性方法,可以设置在不同栅格模式下,组件占用的栅格数量。比如:“.useSizeType({lg: 4})”表示在large栅格系统(即12栅格系统)中,Button组件宽度占用4栅格显示。

因此,此示例在手机和平板上的显示效果如下:

图14 显示效果

三、开发工具能力


除了上面的系统能力和ArkUI 3.0框架能力外,我们还从开发工具(DevEco Studio)方面,为开发者提供了各种各样的开发模板,以及多设备预览等能力,减少开发者的开发调试成本,提升开发效率。

1. 开发模板

开发模板主要包括工程模板和卡片模板。

  • 工程模板:DevEco Studio预置了丰富的工程模板,可以根据工程向导轻松创建适应于各类设备的工程,并自动生成对应的代码和资源模板。创建工程时,开发者可以挑选合适的工程模板。
  • 卡片模板:DevEco Studio提供了多种类型的卡片模板,开发者可以根据需要展示的信息类型灵活选择模板,快速构建服务卡片。

图15 工程模板和卡片模板

2. 多设备预览

DevEco Studio还支持多设备预览能力,开发者可以在同一窗口中,同时查看多种设备下UI界面的展示效果。预览器与真机设备采用相同渲染引擎和UI框架,可以最大程度地做到预览效果与真机运行效果的一致。以下动图展示了多设备预览能力:

感兴趣的小伙伴,可以从官网下载和体验DevEco Studio新版本:华为操作系统DevEco Studio和SDK下载与升级 | HarmonyOS开发者

四、结束语


实现完美的一次开发多端部署效果,离不开开发者的参与。UI开发框架和系统在实现一次开发多端部署的过程中进行了初步的探索,也期待开发者能反馈更多的多设备UI开发过程中的痛点,以及期待系统框架提供的能力。

欢迎开发者和我们一起,在开源社区将一次开发多端部署的能力丰富起来!

体验一下使用 ArkUI 进行 HarmonyOS 开发并与 Compose 简单对比 最近几年各个技术公众号和技术群都在唱衰原生安卓开发,疯狂贩卖焦虑。搞得我也焦虑的不行,在谷歌的 Compose 推出后就赶紧去学,但是又觉得好像 Compose 的热度也不算太高,又去学 Flutter。转头两个都还没学明白呢,大佬们又在说鸿蒙下次更新不兼容安卓了,再不学鸿蒙开发就等着失业吧。啊?这?这能忍?这必须学啊!于是抽出时间来简单了解了一下使用 ArkUI 的鸿蒙应用开发。 阅读详情

相关推荐

鸿蒙Harmony驱动开发:hdc与真机调试

​ 要想开发客户端,真机调试是必须的。要想真机调试,首先得让PC连上设备。对比Android的ADB,华为搞了个hdc(HarmonyOS Device Connector)。 ​

DMZDAMS的博客 3353

鸿蒙4.0应用开发——ArkUI基本布局

组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。在实际的开发过程中,需要遵守以下流程保证整体的布局效果:确定页面的布局结构。分析页面中的元素构成。选用适合的布局容器组件或属性控制页面中各个元素的位置和大小。组件:必备属性 功能属性 位置属性。

高心星的专栏 2126

鸿蒙开发入门:ArkUI框架与ArkTS语言实战指南

分布式操作系统通过解耦硬件与软件实现跨设备协同,鸿蒙OS采用微内核架构和声明式编程范式是其核心技术特点。在移动开发领域,ArkUI作为鸿蒙的UI框架,支持基于ArkTS的声明式开发,这种模式通过状态驱动UI更新,能显著提升代码可维护性和开发效率。对于需要适配手机、平板等多终端的应用场景,鸿蒙的'一次开发多端部署'特性展现出独特优势。实际开发中,DevEco Studio提供的ArkTS语言支持与可视化工具链,配合Resource资源管理系统,使开发者能快速构建高性能应用。本文以天气应用为例,详解了从环境搭建

aofan9566的博客 449

鸿蒙HarmonyOS实战-ArkUI组件(Image)_鸿蒙image组件(1)

84)]

1352

鸿蒙开发入门:ArkTS与ArkUI实战指南

分布式操作系统是现代计算领域的重要发展方向,鸿蒙系统(HarmonyOS)作为华为自主研发的全场景操作系统,采用微内核架构实现跨设备协同。其核心技术包括声明式UI框架和ArkTS编程语言,ArkTS作为TypeScript的超集,通过静态类型检查和装饰器语法显著提升开发效率。在工程实践中,鸿蒙的DevEco Studio工具链提供了从编码到调试的完整支持,特别适合开发需要适配多种终端设备的应用。对于Android开发者转型鸿蒙,理解声明式编程范式与状态管理机制是关键突破点,这能帮助开发者快速构建高性能的分布

weixin_34292402的博客 417

usb通过hdc连接鸿蒙next的常用指令

参考官方 注册报名https://www.hiascend.com/developer/activities/details/44de441ef599450596131c8cb52f7f8c/signup?hdc-调试命令-调测调优-系统 - 华为HarmonyOS开发者关于 hdc 的服务,在任务管理器中可以看到hdc进程带有参数 dummy -l 3-s::ffff:127.0.0.1:8710 -m参数解释dummy表示运行 HDC 工具的 dummy 子命令。

babytiger的专栏 2024

ArkUI实战:手把手教你搭建登录页面

通过以上步骤,我们成功地使用 ArkUI 搭建了一个功能较为完善的登录页面,从环境搭建到布局设计,再到交互逻辑实现以及最后的优化完善,每一步都充分展现了 ArkUI 在界面开发中的强大能力和便捷性。在这个过程中,我们深入了解了 ArkUI 丰富的组件库、灵活的布局方式以及便捷的事件处理机制,利用这些特性,我们能够快速构建出符合需求的用户界面,并实现各种交互功能。同时,通过对登录页面的优化,如界面美化和功能增强,进一步提升了用户体验,使登录页面更加实用和美观。

大雨淅淅的博客 1315

OpenHarmony HDC 2.0 进阶调试:5个ADB不具备的独家功能实战

本文深入解析OpenHarmony HDC 2.0的5个ADB不具备的独家调试功能,包括精细化应用生命周期管理、系统级状态深度分析、UI自动化测试、性能数据一站式采集和远程调试新范式。通过实战案例和详细指令,帮助开发者提升调试效率,充分利用HDC在OpenHarmony生态中的独特优势。

weixin_30755393的博客 306

HDC技术分论坛:HarmonyOS新一代UI框架的全面解读

作者:yuzhiqiang,UI编程框架首席技术专家 在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0、多语言跨平台编译器ArkCompiler 3.0、跨端开发工具DevEco Studio3.0,以及基于TS/JS语言的API 7,全面提升开发者体验。 本期,我们要为大家重点介绍HarmonyOS新一代声明式UI框架ArkUI 3.0。 目录 一、UI编程框架 二、ArkUI框架的演进 三、ArkUI 3.0的关键特性 四、结束语 一、U

HarmonyOSDev的博客 1970

ACE Tools 1.0.0 跨平台环境配置:Windows/macOS/Ubuntu 三系统 5 步快速检查

本文详细介绍了ACE Tools 1.0.0在Windows、macOS和Ubuntu三大操作系统上的跨平台环境配置方法。通过五个标准化步骤,包括系统预检、核心工具链验证、ArkUI-X SDK集成、设备连接检查及环境完整性排错,帮助开发者快速搭建统一的开发环境,提升多平台开发效率。

weixin_30321709的博客 333

别再死记硬背了!一张图搞懂无刷电机半桥与全桥驱动的核心差异(附避坑指南)

本文深入解析无刷直流电机的半桥与全桥驱动方式的核心差异,提供直观对比与选型指南。半桥驱动结构简单、成本低,适合低要求场景;全桥驱动性能优越但复杂,适用于高精度控制。文章还包含实战避坑指南,帮助工程师优化驱动方案选择与应用。

weixin_29290947的博客 319

HarmonyOS 3.0.0开发者预览版全新发布

2021年10月22日在华为开发者大会HDC.Together 2021 主题演讲上,我们发布了HarmonyOS 3.0.0开发者预览版,主要内容包括:Harmony设计系统、ArkUI 3.0、ArkCompiler 3.0、DevEco Studio 3.0和TS/JS API 。 其中,HarmonyOS的UI开发框架从以Java为主要编程语言的命令式UI框架演进为以TypeScript(简称TS)/JavaScript(简称JS)为主要编程语言的声明式UI框架(ArkUI 3.0)。同时,A

HarmonyOSDev的博客 1764

手把手教你搞定EMC EFT测试:从电源线到信号线的完整整改实战(附常见失败原因)

本文详细解析了EMC EFT测试中的常见问题及整改措施,从电源线到信号线的完整实战方案。通过四步定位法和成本最优整改策略,帮助工程师有效应对电快速脉冲群干扰,提升产品通过率并降低成本。

weixin_30920597的博客 498

HarmonyOS ArkUI 3.0:从命令式到声明式UI开发的范式变革与实战解析

在软件开发领域,UI开发范式经历了从命令式到声明式的深刻演进。命令式编程要求开发者精确控制每一步状态变化,而声明式编程则允许开发者专注于描述“界面应该是什么样子”,框架会自动处理状态更新与渲染。这种转变的核心技术价值在于大幅提升开发效率、减少冗余代码,并改善代码的可维护性。其背后的原理依赖于响应式数据绑定与高效的差分更新算法,确保UI能随数据变化而自动、精准地刷新。在应用场景上,声明式UI尤其适合需要快速迭代、UI频繁变更的现代移动应用与跨端应用开发。以华为HarmonyOS的ArkUI 3.0为例,它正是

weixin_30684743的博客 513

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当实验数据不符合正态分布时,该非参数检验是分析两因素设计(包括主效应和交互效应)的有效工具。文章从原理、环境配置、数据导入、核心代码到结果解读与报告撰写,提供了完整的实战指南,并附有常见的避坑建议。

weixin_29061465的博客 398

Cube生成定时器2触发双ADC同步采集并用DMA传输

前言 用cube生成一个用定时器触发ADC1,ADC2同步采集的程序,单片机选择的是STM32L476RGT6,用定时器2进行ADC采集触发,更改定时器2的定时周期便可以更改ADC的采样周期,ADC1和ADC2使用同步规则模式,并用DMA进行数据的传输。 STM32的ADC采样完成总共需要的时间是 ADC完成采样时间=采样周期+12个转换周期 举个例子,假如ADC的时钟是15MHz,采样周期是3个周期,3个采样周期加上12个转换周期,一共是15个周期,因为时钟是15MHz,所以完成一次ADC转换总共需要的时

一行代码的博客 4513

【鸿蒙PC桌面端实战】从零构建 ArkTS 高性能图像展示器:DevEco Studio 调试与 HDC 命令行验证全流程

本文详细介绍了基于开源鸿蒙(OpenHarmony)的PC端应用开发实战。文章首先阐述了鸿蒙PC操作系统的发展现状及开发特点,随后通过一个"高性能图像展示器"案例,完整展示了使用DevEcoStudio和ArkTS开发桌面应用的全过程。重点内容包括:1)开发环境搭建;2)核心代码解析与原理剖析;3)HDC命令行工具的真机验证流程;4)PC端开发的适配建议和常见问题。该案例充分利用ArkUI的响应式特性,实现了图片浏览、全屏切换等功能,展现了鸿蒙PC在桌面应用开发中的优势,为开发者提供了实

程序猿追的博客 1万+

算法真的是个很有用的东西,通过python或者golang实现对N张图片的自动排版,每张图片的长和宽都不一样,有的是横图,有的是竖图,最终需要生成一张完整的矩形图片

算法真的是个很有用的东西,通过python或者golang实现对N张图片的自动排版,每张图片的长和宽都不一样,有的是横图,有的是竖图,最终需要生成一张完整的矩形图片。

代码讲故事 503

鸿蒙5.0开发【如何通过hdc命令拉起指定的UIAbility】应用运维

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(

鸿蒙的技术博客 595

NR PUCCH(二)PUCCH format 2/3/4

继续看PUCCH2/3/4:PUCCH format 0和1所携带的信息bits少,UCI bits2bits,信息bit需要经过编码等过程下面分别来看。

ModemProtocol的博客 539

基于simulink的车道保持辅助系统(LKA)的仿真与实现

本文介绍了如何利用Simulink实现车道保持辅助系统(LKA)的仿真与建模。首先对比了车道偏离预警(LDW)和LKA的功能差异,强调LKA的主动干预特性。接着详细阐述了LKA系统架构,包括环境感知、决策控制等核心组件,并基于自行车模型建立车辆横向动力学方程。 文章重点演示了Simulink建模步骤:搭建车辆动力学模型、设计LKA控制器(采用LQR算法)、实现执行器接口和驾驶员干预检测。通过四个典型场景的仿真测试,验证了系统在直道行驶、弯道跟踪等工况下的控制性能,并给出了关键评价指标。最后展望了MPC控制、

amy_mhd的博客 228

ArkUI-X 1.0.0 跨平台项目实战:从 0 到 1 构建 Android/iOS/HarmonyOS 三端应用

本文详细介绍了如何使用ArkUI-X 1.0.0构建跨平台应用,涵盖从环境配置到项目打包的全流程。通过ArkTS语言,开发者可一次性编写代码,生成兼容HarmonyOS、Android和iOS三端的原生应用,显著提升开发效率并降低维护成本。

aobu0171的博客 327

C# 上位机 YOLO 实战:从数据采集到目标识别的全流程拆解

本文以工业螺栓缺陷检测为例,完整拆解了C#上位机+YOLO从数据采集到目标识别的全流程。数据采集:保证图像质量,线程安全采集,必要时归档数据;预处理:适配YOLO模型输入格式,复用对象减少内存开销;推理解析:正确解析张量结果,过滤低置信度目标;落地环节:可视化展示结果,实现工业交互和日志记录。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1454

HarmonyOS 6.0 PC真机开发实践:ArkUI水果列表Demo从搭建到桌面级体验

跨端开发一直是移动与桌面融合的重要方向,HarmonyOS 6.0将PC作为一等公民,为开发者提供了全新的桌面应用构建思路。ArkUI作为鸿蒙原生声明式UI框架,凭借系统级组件渲染、多窗口调度和键鼠事件分发能力,让一套ArkTS代码轻松覆盖手机、平板与PC。本文从最基础的水果列表Demo切入,系统讲解原生开发环境搭建、List组件与ForEach渲染、状态管理、响应式栅格布局,以及PC真机部署与调试流程。通过窗口自适应、右键菜单、LazyForEach懒加载等关键优化手段,揭示桌面应用并非手机页面的简单放大

weixin_28475533的博客 204

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

鸿蒙ArkUI即将取代Java UI?

关注前端开发的同学,一定听过近些年,DSL 描述式的 UI 构建写法,大有取代传统命令式布局的趋势。 传统上,写一套 UI 代码,需要根据数据的逻辑,手动的在业务代码里,去改变界面 UI 元素的状态,造成业务代码和 UI 代码搅在一起,黑话=“耦合性极高”。结果就是,把人人都炼成了一身诸哥的本事,事必躬亲,鞠躬尽瘁… 好的。话说在网页开发的远古时代(2013 年以前),想写一个炫酷的网页,往往需要直接操作 HTML 元素,比如控制网页上一个价格数字根据选择不同优惠券的变化,需要直接操作这个价格文字元素。 类

张晨光老师的播客 6618

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

开源鸿蒙Termony项目HAP打包踩坑实录:Mac环境下的ArkUI-X路径与签名配置避雷指南

本文详细解析了在Mac环境下为开源鸿蒙Termony项目构建HAP包时遇到的ArkUI-X路径缺失和签名配置问题,提供了从环境准备到错误排查的完整解决方案。特别针对404错误和签名失败等常见问题,给出了具体的修复步骤和优化建议,帮助开发者高效完成HAP打包。

weixin_29310631的博客 393

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: HDC2021技术分论坛:HarmonyOS本地模拟器来啦
下一篇: HDC2021技术分论坛:吐司盒子?芝士码?HarmonyOS音视频测试来啦
「已注销」
博客等级 码龄5年 1045粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值