一直以来,跨终端开发便如拦路虎一般横亘于开发者面前,从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份官方定制周边礼品,大家千万不要错过。


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

历史上的今天:03月28日

热门专题

安徽开放大学|安徽开放大学报名,安徽开放大学报考,安徽开放大学,什么是安徽开放大学,安徽开放大学学历,安徽开放大学学费,安徽开放大学报名条件,安徽开放大学报名时间,安徽开放大学学历,安徽开放大学专业
安徽开放大学
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
金诺幼儿园(春城路金诺幼儿园)|昆明官渡区幼儿园,幼儿园报名,官渡区幼儿园,春城路幼儿园,幼儿园招生,学前班,昆明幼儿园,金诺幼儿园,环城南路幼儿园,石井路幼儿园
金诺幼儿园(春城路金诺幼儿园)
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部