欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HarmonyOS Image 组件 显示图片

程序员文章站 2022-07-15 16:02:16
...

    HarmonyOS的Image组件java代码显示图片与安卓的ImageView相比略有不同,记录一下。

图片放在 Media 文件夹里面

HarmonyOS Image 组件 显示图片

 主要思路是先获取Resource,然后通过 ImageSource 创建  PixelMap,最后就可以用 Image的 setPixelMap()方法了。


public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        //从xml布局中获取Image组件
        Image image= (Image) findComponentById(ResourceTable.Id_image);

        ResourceManager resourceManager=getResourceManager();

        Resource resource;
        byte[] bytes=null;
        try {
            // ResourceTable.Type_name 可以获取资源文件的id
            //ResourceManager.getResource(int id) 通过id 获取 Resource
            resource=resourceManager.getResource(ResourceTable.Media_picture);

            //Resource.available() 能获取当前文件的字节数
            bytes = new byte[resource.available()];

            //将 Resource 文件数据读入数组中
            resource.read(bytes);
        } catch (IOException | NotExistException e) {
            e.printStackTrace();
        }

        // 用于 ImageSource的 create(bytes,srcOpts)方法
        ImageSource.SourceOptions srcOpts=new ImageSource.SourceOptions();
        //设置图片原格式也可以用 null
        srcOpts.formatHint="image/jpg";

        ImageSource imageSource=ImageSource.create(bytes,srcOpts);

        //通过ImageSource创建 PixelMap文件
        PixelMap pixelMap=imageSource.createPixelmap(null);

        //为Image 设置 PixelMap,显示图片
        image.setPixelMap(pixelMap);

    }


}

 

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">
<Image ohos:id="$+id:image"
       ohos:width="match_parent"
       ohos:height="match_content"
       ohos:scale_mode="zoom_center"/>


</DirectionalLayout>

 

相关标签: HarmonyOS开发