求助大佬们...怎么播放网络gif图片呢
也是在网上找的demo
代码如下
import com.linchtech.myapplication.ResourceTable;
import com.linchtech.myapplication.utils.ImageReadUtil;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Image;
import ohos.app.dispatcher.TaskDispatcher;
import ohos.app.dispatcher.task.TaskPriority;
import ohos.media.image.PixelMap;
public class WebImageAbilitySlice extends AbilitySlice {
String urlImage = "https://tp1.tupiankucdn.com/ws/large/005GOaLIgy1fxg0o36dp4g308c05lqfy.gif";
private Image image;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_web_image);
this.image = (Image) findComponentById(ResourceTable.Id_net_image_example);
/**
* 读取网络数据的耗时操作在TaskDispatcher分发的单独线程中处理,
* 否则会报 "NetworkOnMainThreadException"异常
*/
TaskDispatcher refreshUITask = createParallelTaskDispatcher("", TaskPriority.DEFAULT);
refreshUITask.syncDispatch(()->{
PixelMap pixelMap = ImageReadUtil.createPixelMap(urlImage);
getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
@Override
public void run() {
//Image组件填充位图数据,ui界面更新
image.setPixelMap(pixelMap);
pixelMap.release();
}
});
});
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.media.image.ImageSource;
import ohos.media.image.PixelMap;
import java.io.InputStream;
/**
* 图片读取工具类
* user:lixiaoda
* date:2021/1/29
*/
public class ImageReadUtil {
public static PixelMap createPixelMap(String imageUrl) {
InputStream inputStream = HttpsUtil.getInputStream(imageUrl, RequestMethod.GET.name());
/*
设置sourceOptions的formatHint为指定mime类型可提高解析效果;
sourceOptions为null则ImageSource自动根据mime类型进行解析;
*/
ImageSource.SourceOptions sourceOptions = new ImageSource.SourceOptions();
sourceOptions.formatHint = "image/gif";
ImageSource imageSource = ImageSource.create(inputStream, sourceOptions);
PixelMap pixelMap = imageSource.createPixelmap(null);
/*
读取完成后,需要关闭流资源。流未关闭会造成流资源阻塞,
即使数据读取完成也会持续等待流数据信息,导致调用方获取不到数据
*/
HttpsUtil.closeStream();
HiLog.info(new HiLogLabel(0, 0, "ImageReadUtil"), "PixelMap info:%{public}s ", pixelMap.getImageInfo().size);
return pixelMap;
}
}使用远程真机模拟器调试后,图片一直没用动,是个静态图片
7
浏览762 发布于2022-01-19 07:49未知归属地
全部评论
最多点赞
最新发布
最早发布
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要发帖子
了解社区公约,与您携手共创和谐专业的开发者社区。











































苏公安网备 32011402010933号