一直以来,跨终端开发便如拦路虎一般横亘于开发者面前,从UI到后台,从图片到数据,都让人难以把控。而凭借分布式用户程序框架、Ability框架和UI框架,HarmonyOS为开发者提供了可分可合可流转的开发体验,保障应用在多终端运行时的一致性,让跨终端开发者不再“谈虎色变”。

在上个月底,华为HarmonyOS 2.0手机开发者Beta3版本的发布,越来越多的开发者有机会接触到了这一操作系统,也有机会来借此来完成一系列的编程操作。能够帮助开发者降低开发成本的不只是分布式开发框架,还有面向华为终端全场景多设备的一站式集成开发环境(IDE)DevEco Studio 2.1 Beta3,其能够为开发者提供工程模板创建、开发、编译、烧录、测试、发布等一系列应用开发服务。

据CSDN记者获悉,HarmonyOS的全面公测即将在近期开启。工欲善其事必先利其器,提前熟悉DevEco Studio想必可以让开发者能够更快的适应HarmonyOS应用开发。而这款IDE的下载方式早已公开,下载链接如下,希望广大开发者能够及时下载试用。

https://t.csdnimg.cn/FlPn

那么,全新升级的DevEco Studio 2.1 Beta3究竟有哪些提升呢?我们不妨简单一看。

IDE的升级,是开发能力的落地

在此次升级之后,开发者在查看应用的UI界面效果进行UI界面布局及控件异常排查时,全新的DevEco Studio 2.1 Beta3在已有的 “实时预览”和“动态预览”基础上,提供了双向预览功能,其能够支持代码编辑器和预览器界面两者之间的联动,实现快速定位控件。

在预览时,开发者若想根据返回值做出不同的UI界面展现,往往需要手动反复修改代码逻辑,以验证不同UI界面效果。DevEco Studio 2.1 Beta3提供Java UI界面中的PreviewMock数据模拟功能,其可以模拟API或者业务代码中的各种method的返回值和对象中的Field的值。因此在预览时,便能够查看到不同返回值带来的界面变化。

作为后来者,HarmonyOS开发者在开发过程中免不了反复切换界面查阅资料文档,因此DevEco Studio 2.1 Beta3新增了可视化配置功能。开发者可通过打开config.json文件点击上方按钮,打开设置界面,即可查看该项目所需填写的重要属性及其含义,完善应用名称、应用版本号、应用类型、Ability、设备类型、应用权限等配置项。

为了降低开发者在创建带限定词的资源目录时的出错机率,DevEco Studio 2.1 Beta3新增了资源创建向导功能,用户根据界面提示进行选择或输入,即可完成资源目录及文件的创建,无需思索各种限定词之间的组合关系。

更为重要的是,为了减化繁琐的人工测试环节,DevEco Studio 2.1 Beta3 新增了Java测试框架,并且提供了Java代码的白盒测试能力,这能够帮助开发者高效编写和执行测试用例,保障应用基础质量。

此外,DevEco Studio还在MacOS适配、Node.js优化、IntelliJ IDEA底座升级等多个细节领域进行了提升,对开发者的帮助将会更加的细致和全面。那么借助DevEco Studio,才能实现简单的图库图片的操作呢?想要实现这些,难度并不高。

基于图像模块实现图库图片的多种常见操作

HarmonyOS图像模块支持图像业务的开发,常见功能如图像解码、图像编码、基本的位图操作、图像编辑等。当然,也支持通过接口组合来实现更复杂的图像处理逻辑。本教程以图库图片中旋转、剪裁、缩放、镜像四种常见操作为例,给大家介绍HarmonyOS图像编解码的相关开发指导。

图像解码就是将所支持格式的存档图片解码成统一的PixelMap图像,用于后续图像显示或其他处理,比如旋转、缩放、剪裁等。当前支持格式包括JPEG、PNG、GIF、HEIF、WebP、BMP。本例为您提供了getPixelMapFromResource函数,可以将resources/base/media目录下的图片资源转换为PixelMap图像,其中入参为图片的资源ID,

private PixelMap getPixelMapFromResource(int resourceId) {InputStream inputStream = null;try {// 创建图像数据源ImageSource对象inputStream = getContext().getResourceManager().getResource(resourceId);ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions();srcOpts.formatHint = "image/jpg";ImageSource imageSource = ImageSource.create(inputStream, srcOpts);// 设置图片参数ImageSource.DecodingOptions decodingOptions = new ImageSource.DecodingOptions();return imageSource.createPixelmap(decodingOptions);} catch (IOException e) {HiLog.info(LABEL_LOG, "IOException");} catch (NotExistException e) {HiLog.info(LABEL_LOG, "NotExistException");} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {HiLog.info(LABEL_LOG, "inputStream IOException");}}}return null;
}

本例使用图片像素的尺寸为1024*768,点击一次旋转按钮会进行90度的旋转,缩放是按照2:1的比例进行缩放,剪裁是保证宽度不变的情况下对高度进行400像素的剪裁,相关参数设置如下所示:

// 设置图片参数
ImageSource.DecodingOptions decodingOptions = new ImageSource.DecodingOptions();
// 旋转
decodingOptions.rotateDegrees = 90 * whirlCount;
// 缩放
decodingOptions.desiredSize = new Size(isScale ? 512 : 0, isScale ? 384 : 0);
// 剪裁
decodingOptions.desiredRegion = new Rect(0, 0, isCorp ? 1024 : 0, isCorp ? 400 : 0);

图片镜像操作就是对图片以纵坐标为轴制作对称图片。image绘制的时候会调用onDraw方法,本例采用对图像Canvas画布的镜像操作实现图片的镜像显示,示例代码如下所示:

private void mirrorImage(PixelMap pixelMap) { scaleX = -scaleX; image.addDrawTask( new Component.DrawTask() { @Override public void onDraw(Component component, Canvas canvas) { if (isMirror) { isMirror = false; PixelMapHolder pmh = new PixelMapHolder(pixelMap); canvas.scale( scaleX, 1.0f, (float) pixelMap.getImageInfo().size.width / 2, (float) pixelMap.getImageInfo().size.height / 2); canvas.drawPixelMapHolder( pmh, 0, 0, new Paint()); } } });
}

至此,HarmonyOS图像编解码的基本操作已然完成。

线上线下并进,HarmonyOS开发者日上海站开启

2020年底,华为消费者业务软件部总裁王成录在HarmonyOS手机开发者Beta活动北京站曾说过,HarmonyOS 的发展,难点在于生态。而如今,HarmonyOS热度不减,IDE下载量持续增长,而生态的发展也确实成为了重中之重。

线上的HarmonyOS教程打造,HarmonyOS开发者创新大赛开启;线下的手机开发者Beta活动,以及官方的HarmonyOS开发者日走遍祖国大地。全方位的推广,全方位的投入,HarmonyOS官方持续带领专家、先行者和生态合作伙伴共同推动HarmonyOS技术的生根、发芽和茁壮。

在4月17日,HarmonyOS开发者日落地上海,全面的案例解读,深度的HarmonyOS技术剖析,全天候的Codelab,8大场景体验展区,把硬核的技术和花样的体验打包在一起,实现真正的HarmonyOS一日畅玩。

由于疫情影响,线下活动将会对人数进行限制,因此如果您无法亲自前往现场参与活动,欢迎点击阅读原文或者扫描下方二维码在线上观看活动直播。凡是参与直播互动的朋友,均有机会赢取300份官方定制周边礼品,大家千万不要错过。

值得一提的是,由于现场参会设置了大量的动手体验环节,因此建议大家能够前往下方地址(https://t.csdnimg.cn/FlPn)下载并安装DevEco Studio,以便提前适应并用于实操练习。

HarmonyOS IDE再升级,跨终端开发真的简单了吗?相关推荐

  1. 前端如何优雅的实现跨终端开发(PC端+移动端)

    文章目录 解决方案一:使用CSS媒体查询. 解决方案二:写两套代码,分别应用于PC端和移动端. 推荐方案:使用CabloyJS 相关链接 解决方案一:使用CSS媒体查询. 这是传统的解决方案.使用一套 ...

  2. 什么是跨终端web开发

    一句话概括:其实Web原本并非跨终端,但应用场景多了,就变成了"跨终端". 既然说是Web,我就把范围划定在互联网相关的技术栈内. 任何基于TCP/IP模型应用层协议的Web应用的 ...

  3. BCS2022|“体系化防御,数字化运营” 奇安信终端安全能力再升级

    7月13日,以"零事故之路"为主题的2022年北京网络安全大会(BCS 2022)正式开幕. 在大会首日,奇安信对外发布能力升级后的终端安全产品矩阵,进一步强化了"体系化 ...

  4. 安卓3d游戏开发引擎_鲁大师安卓3D引擎更新,跑分测试精准度再升级

    去年十月份的时候,鲁大师曾发布了针对安卓性能跑分的重大升级版本v9.0.与国内知名游戏工作室"西山居"合作,更换了全新的Unity 3D渲染引擎,又将原有的测试项目进行了部分精简, ...

  5. Taro小程序跨端开发入门实战

    背景 一开始我们只做微信小程序,随着我们的业务不断扩张和各大小程序平台的崛起,针对每个平台都去写一套代码是不现实的.而且原生的小程序开发模式有很多弊端. 为了让小程序开发更简单,更高效,我们采用 Ta ...

  6. HarmonyOS(鸿蒙系统)物联网开发教程——环境搭建

    HarmonyOS(鸿蒙系统)物联网开发教程--环境搭建 目录 HarmonyOS(鸿蒙系统)物联网开发教程--环境搭建 前言 1 HarmonyOS简介 2 开发环境搭建 2.1 简洁版环境搭建(使 ...

  7. 华为鸿蒙官网旗舰店,华为发布鸿蒙系统HarmonyOS Connect品牌升级计划

    5月18日,华为正式宣布了鸿蒙系统HarmonyOS Connect品牌升级计划,帮助合作伙伴做好产品.卖好产品.运营好产品. 据介绍,其一做好产品,加入HarmonyOS Connect生态,合作伙 ...

  8. 网易云游戏来了:手机电脑电视随时接入可玩,高流畅度低延迟,还能跨终端无缝切换...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 囿于版号的游戏行业,终于快 ...

  9. 跨终端响应式页面设计入门

    跨终端/响应式页面不外乎是让各种分辨率的屏幕都能顺利阅读你的页面,常规来讲一个跨终端页面,在宽屏的电脑上看和在小屏幕手机上看的布局是不同的,布局不同的原因是为了让读者更好地阅读你的页面,见下图: 这里 ...

最新文章

  1. Python 基础 一
  2. 003_支持并发的饿汉单例
  3. OPA 11 - how is check called in my iClickTheCreateButton
  4. mysql权限清理_mysql清理用户权限
  5. vb 根据pid获取句柄_C++中避免返回指向对象内部的句柄(handles)
  6. php 什么时候传引用,什么时候在PHP中使用传递引用?
  7. HTTP、HTTPS、SSL、TLS之间的关系
  8. Displaying a Refresh Control for Table Views
  9. Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
  10. Activiti中的流程存储服务(RepositoryService)
  11. 一些常用SQL语句大全
  12. 力扣-64 最小路径和
  13. paip. C#.NET循环获取不同随机数的方法根据时间
  14. Android游戏开发–基本游戏架构
  15. java助教_2018-2019第一学期Java助教心得
  16. 语音变声器微信小程序源码/支持多种音效变声器小程序源码
  17. 数字图像处理:空间相关与卷积操作
  18. data mining - 实用机器学习工具与技术 - 读书笔记( 一 )
  19. 开学季:20本Python经典书单
  20. 音视频基础认知——ISP与DSP

热门文章

  1. ROS学习笔记九:用C++编写ROS发布与订阅
  2. 利用阿里云LAMP环境搭建搭建wiki知识库
  3. Codeforces - 814B - An express train to reveries - 构造
  4. xampp apache无法启动的解决方法
  5. Application.Current的使用
  6. javascript打开模式窗口的用法
  7. 快捷方便的对js文件进行语法检查。
  8. 在Jupyter Notebook中调用ML模型服务图像标题生成器
  9. Ambari--告警管理
  10. Pytorch 编译cpp、cuda扩展遇到的问题