网络图片_Image渲染网络图片 原创

BLUESKYHOST
发布于 2021-3-11 10:41
浏览
4收藏

方案一

效果图

网络图片_Image渲染网络图片-鸿蒙开发者社区

开启明文传输 在config.json配置文件添加如下配置(如果不开启可以不配置)

  "deviceConfig": {
     "default": {
       "network": {
         "usesCleartext": true
       }
     }
  },

权限申请  在配置文件module中添加如下

 "reqPermissions": [{
      "name":"ohos.permission.INTERNET"
    }],

引入zzr老师写的鸿蒙http插件

 implementation 'com.zzrv5.zzrhttp:ZZRHttp:1.0.1'

案例1

使用方式,

 new ImageNetWork(”当前的abilitySlice“,“创件的Image组建”,"图片地址").start();

网络图片类

 

package com.example.shangjinlieren.compontents;

import com.zzrv5.mylibrary.ZZRCallBack;
import com.zzrv5.mylibrary.ZZRHttp;
import com.zzrv5.mylibrary.ZZRResponse;
import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.components.Image;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.media.image.ImageSource;
import ohos.media.image.PixelMap;

public class ImageNetWork {
    private final static HiLogLabel LABEL_LOG = new HiLogLabel(HiLog.LOG_APP, 0, "HmOSImageLoader");
    private  AbilitySlice abilitySlice;
    private  Image image;
    private  String url;

    public ImageNetWork(AbilitySlice abilitySlice, Image image, String url) {
        this.abilitySlice = abilitySlice;
        this.image = image;
        this.url = url;
    }

    public  void start() {
        ZZRHttp.get(url, new ZZRCallBack.CallBackString() {
            @Override
            public void onFailure(int code, String errorMessage) {
                //http访问出错了,此部分内容在主线程中工作;
                //可以更新UI等操作,请不要执行阻塞操作。
                System.out.println("errorMessage"+errorMessage);
            }
            @Override
            public String onParseResponse(ZZRResponse response) {
                //创建图片源
                ImageSource imageSource = ImageSource.create(response.inputStream, null);
                //根据图片源创建位图
                PixelMap pixelMap = imageSource.createPixelmap(null);
                //需要异步渲染UI
                abilitySlice.getUITaskDispatcher().asyncDispatch(new Runnable() {
                    @Override
                    public void run() {
                        //展示到组件上
                        System.out.println("挂载了");
                        image.setPixelMap(pixelMap);
                        pixelMap.release();

                    }
                });
                return super.onParseResponse(response);
            }
            @Override
            public void onResponse(String response) {

            }
        });
    }
}

方案二

这种方式获取InputStream  在一版本替换对于的部分

InputStream inputStream = new URL("https://*.jpg").openStream();

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2021-3-22 10:08:31修改
4
收藏 4
回复
举报
2条回复
按时间正序
/
按时间倒序
禹福
禹福

马克一下,晚上回去试试楼主的代码。

回复
2021-3-11 12:02:16
BLUESKYHOST
BLUESKYHOST 回复了 禹福
马克一下,晚上回去试试楼主的代码。

记得关注点赞分享

回复
2021-3-11 16:16:23
回复
    相关推荐