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

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

方案一

效果图

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

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

  "deviceConfig": {
     "default": {
       "network": {
         "usesCleartext": true
       }
     }
  },
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

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

 "reqPermissions": [{
      "name":"ohos.permission.INTERNET"
    }],
  • 1.
  • 2.
  • 3.

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

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

案例1

使用方式,

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

网络图片类

 

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) {

            }
        });
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.

方案二

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

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

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

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

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

记得关注点赞分享

回复
2021-3-11 16:16:23


回复
    相关推荐