打开网易新闻 查看更多图片

一直以来,跨终端开发便如拦路虎一般横亘于开发者面前,从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() {@Overridepublic 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,以便提前适应并用于实操练习。