TabList中的setIconElement 这个怎么使用?

TabList中的setIconElement 这个怎么使用?

TabList中的setIconElement 这个怎么使用?-鸿蒙开发者社区

鸿蒙
HarmonyOS
TabList
2021-11-12 09:26:23
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
缪澍

可参考如下代码:

public  void  setTabIcon(TabList.Tab tab) {

   //ResourceTable.Media_icon 为项目图片资源ID,通过resourceID获取PixelMap对象

    Optional<PixelMap> pixelMapOptional = createPixelMapByResId(ResourceTable.Media_icon);

    //创建PixelMapElement对象

    PixelMapElement bitmapDrawable = new PixelMapElement(pixelMapOptional.get());

    //给tab设置IconElement

    tab.setIconElement(bitmapDrawable);

}

public  Optional<PixelMap> createPixelMapByResId(int resourceId) {

ResourceManager manager = this.getContext().getResourceManager();

if (manager == null) {

return Optional.empty();

}

try (Resource resource = manager.getResource(resourceId)) {

if (resource == null) {

return Optional.empty();

}

ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions();

srcOpts.formatHint = "image/png";

ImageSource imageSource = ImageSource.create(readResource(resource), srcOpts);

if (imageSource == null) {

return Optional.empty();

}

ImageSource.DecodingOptions decodingOpts = new ImageSource.DecodingOptions();

decodingOpts.desiredSize = new Size(0, 0);

decodingOpts.desiredRegion = new Rect(0, 0, 0, 0);

decodingOpts.desiredPixelFormat = PixelFormat.ARGB_8888;

return Optional.of(imageSource.createPixelmap(decodingOpts));

} catch (NotExistException | IOException e) {

return Optional.empty();

}

}

private  byte[] readResource(Resource resource) {

final int bufferSize = 1024;

final int ioEnd = -1;

byte[] byteArray;

byte[] buffers = new byte[bufferSize];

try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {

while (true) {

int readLen = resource.read(buffers, 0, bufferSize);

if (readLen == ioEnd) {

byteArray = output.toByteArray();

break;

}

output.write(buffers, 0, readLen);

}

} catch (IOException e) {

return new byte[0];

}

return byteArray;

}

分享
微博
QQ
微信
回复
2021-11-12 14:46:06
相关问题
TabList可以添加图片么?
7739浏览 • 3回复 待解决
minCompatibleVersionCode 这个怎么配置?
3496浏览 • 1回复 待解决
鸿蒙tablist 如何通过滑动切换页面?
6451浏览 • 1回复 待解决
这个swipe事件怎么写啊?
9627浏览 • 2回复 待解决
TabList find返回总为null问题请教
7323浏览 • 5回复 待解决
JS API web组件 怎么使用
5152浏览 • 1回复 待解决
使用预览器报这个原因是?
4130浏览 • 1回复 待解决
有大佬知道怎么解决这个问题吗?
5968浏览 • 1回复 待解决