HarmonyOS鸿蒙Next中Image控件是否可以加载SVG格式的图片?

HarmonyOS鸿蒙Next中Image控件是否可以加载SVG格式的图片? 按照官方文档的说明把一张svg格式的图片成功转换位xx.xml后存在graphic目录下,有没有谁试过如果把这个svg图片给显示到Image控件上呢?

Image控件动态改变要显示的图片似乎是使用setImageAndDecodeBounds方法,但如果id直接传svg的资源会直接闪退。

试了另外种方法:

VectorElement ve = new VectorElement(this, ResourceTable.Graphic_svg_icon_ccb);
icon.setImageElement(ve);

报错是不报了,但同样图片显示不出来。求教各位


更多关于HarmonyOS鸿蒙Next中Image控件是否可以加载SVG格式的图片?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

开发者你好,Image控件可以加载SVG格式的图片。

xml中加载引用如下

ohos:background_element="$graphic:button_element",

可参见 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/start-first-page-0000000000038014 有使用到

java文件中的使用方法如下

Component imageView = root.findComponentById(ResourceTable.Id_sleep_moon_img);
imageView.setBackground(new VectorElement(context, ResourceTable.Graphic_ic_icon_moon));

可参见 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/wearable-adding-module-0000001053581601 有使用到

更多关于HarmonyOS鸿蒙Next中Image控件是否可以加载SVG格式的图片?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


最近在用一个第三方组件,我发现它在直接用Image的setPixelMap()加载SVG图片会失败。提示信息是:

Got a deoptimization request on un-deoptimizable method ohos.media.image.PixelMap ohos.media.image.ImageSource.nativeCreatePixelmap(ohos.media.image.ImageSource, long, int, ohos.media.image.ImageSource$DecodingOptions)

是不是意味着不能够直接使用这个方法来设置SVG图片呢?或者说,我的问题是,如何直接给Image对象设置SVG图片?


原来的代码 (原来的这个代码会crash)

mTabImage.setPixelMap(tabInfo.defaultImage);

我修改的代码 (好像是可行的)

mTabImage.setImageElement(new VectorElement(getContext(), tabInfo.defaultImage));

问题2: 有什么办法提前判断图片的类型?比如判断图片是位图还是矢量图

总的来说,HarmonyOS是一款非常优秀的操作系统,期待它能在未来带给我们更多惊喜!

同样问题遇到过,LZ找到解决方案了吗

看来没人研究过 自顶一下

亲爱滴开发者 ,这个问题已经在处理中啦,稍后答复你哟 ,么么哒

在HarmonyOS鸿蒙Next中,Image控件可以加载SVG格式的图片。鸿蒙系统提供了对SVG格式的支持,开发者可以通过Image控件直接加载并显示SVG图片。SVG作为一种矢量图形格式,具有缩放不失真、文件体积小等优点,适合在多种设备上使用。鸿蒙Next中,Image控件通过内置的解析器可以正确解析和渲染SVG文件,确保在不同分辨率的设备上都能获得清晰的显示效果。开发者只需将SVG文件路径或资源ID传递给Image控件即可实现加载。

在HarmonyOS鸿蒙Next中,Image控件目前主要支持加载常见的位图格式(如PNG、JPEG等),而SVG格式作为矢量图形,尚未直接支持通过Image控件加载。若需使用SVG格式图片,建议将SVG转换为其他支持的格式或使用第三方库进行解析和渲染。未来鸿蒙系统可能会增加对SVG格式的原生支持,请持续关注官方更新。

回到顶部