HarmonyOS Image 组件 显示图片
程序员文章站
2022-07-15 16:02:16
...
HarmonyOS的Image组件java代码显示图片与安卓的ImageView相比略有不同,记录一下。
图片放在 Media 文件夹里面
主要思路是先获取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>
上一篇: 往有序链表的插入元素使原链表依旧有序
下一篇: PyTorch计算局部相关性矩阵