java - Android:显示来自互联网的 .gif

标签 java android inputstream gif movie

我知道,在 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/

相关文章:

Java-Sockets : InputStream. read() 与 BufferedReader.read()

java - 将 Jetty 缓冲区转换为 InputStream

Java for Web - 编码错误的多部分/表单数据文件

java - "Crypting"Java练习

android - 谷歌地图 getMap 返回 null

android - Android中触发器和事件有什么区别

java - springboot @EnableConfigurationProperties 不起作用

java - 如何设置 httpExchange 响应的编码?

android - Google Play 服务缺少必需的 XML 属性 "adSize"

c++ - 循环,if 语句,使用 inputFile 的函数仅输出 0