我知道,在 Android 中,可以将 .gif 文件存储在 Movie 对象中,然后使用 setTime() 操作帧。当我尝试显示来自资源的 .gif 时,它工作正常。
不幸的是,从 URL 显示 .gif 不太成功。相关代码如下:
public void setMovieURL(String url) throws MalformedURLException, IOException {
movie = Movie.decodeStream(fetch(url));
}
private static InputStream getStreamFromURL(String url) throws MalformedURLException, IOException {
return fetch(url);
}
public static InputStream fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
InputStream content = url.openStream();
return content;
}
Movie 被设置为非空值,但其高度、宽度和持续时间均为 0。在 InputStream 中触发了 IOException(因为调用了 reset()),但它也在 InputStream 中被捕获。这可能相关也可能不相关。
我不明白为什么那行不通。我束手无策,我的替代方法是下载文件并保存它,或者处理字节数组。
最佳答案
即使从内部存储中的文件(而不是资源)读取 gif 时,也会发生同样的情况。 解决方法-下载到byte[],然后使用ByteArrayInputStream初始化电影。
关于java - Android:显示来自互联网的 .gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528239/