Android 加载gif图,Glide

这篇具有很好参考价值的文章主要介绍了Android 加载gif图,Glide。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人中心

DownLoad

Android 可以使用 Glide、Picasso、Fresco 等第三方库来加载 gif 图。

Glide 为例,可以按照以下步骤加载 gif 图:

1. 在 build.gradle 文件中添加 Glide 的依赖:

```
dependencies {
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
}
```

2. 在布局文件中添加 ImageView 控件:

```
<ImageView
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
```

3. 在代码中使用 Glide 加载 gif 图:

```
Glide.with(this).load(R.drawable.gif_image).into(imageView);
```

其中,R.drawable.gif_image 是 gif 图片的资源 id。

如果需要设置 gif 图片的属性,可以使用 RequestOptions:

```
RequestOptions options = new RequestOptions()
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .override(300, 300)
    .centerCrop();

Glide.with(this)
    .load(R.drawable.gif_image)
    .apply(options)
    .into(imageView);
```

其中,placeholder 和 error 是占位图和错误图,override 是设置图片的大小,centerCrop 是设置图片的缩放类型。

Android 原生支持 GIF 图片的加载,可以使用 `Movie` 类来加载和播放 GIF 图片。

以下是加载 GIF 图片的示例代码:

```java
public class MainActivity extends AppCompatActivity {

    private ImageView mImageView;
    private Movie mMovie;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mImageView = findViewById(R.id.imageView);

        // 加载 GIF 图片
        InputStream inputStream = getResources().openRawResource(R.raw.sample_gif);
        mMovie = Movie.decodeStream(inputStream);

        // 设置 ImageView 的宽高
        mImageView.setMinimumWidth(mMovie.width());
        mImageView.setMinimumHeight(mMovie.height());

        // 开始播放 GIF 图片
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mImageView.invalidate();
                        }
                    });
                }
            }
        }).start();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        long now = android.os.SystemClock.uptimeMillis();
        if (mMovieStart == 0) {
            mMovieStart = now;
        }
        if (mMovie != null) {
            int duration = mMovie.duration();
            if (duration == 0) {
                duration = 1000;
            }
            int relTime = (int) ((now - mMovieStart) % duration);
            mMovie.setTime(relTime);
            mMovie.draw(canvas, 0, 0);
            invalidate();
        }
    }
}
```

在上面的代码中,我们首先使用 `Movie.decodeStream()` 方法加载 GIF 图片,然后设置 ImageView 的宽高为 GIF 图片的宽高。接着,我们使用一个线程不断调用 `ImageView.invalidate()` 方法来刷新 ImageView,从而实现 GIF 图片的播放。最后,在 `onDraw()` 方法中,我们使用 `Movie.draw()` 方法将 GIF 图片绘制到 Canvas 上。文章来源地址https://www.toymoban.com/news/detail-629886.html

到了这里,关于Android 加载gif图,Glide的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android中类加载机制

    Android 双亲委派机制 Android 中的双亲委派机制是一种类加载机制,用于从多个类加载器中加载类。它允许类加载器委派加载类的请求给其父类加载器,直到找到可以加载该类的类加载器为止。 工作原理: 当一个类需要被加载时,Java 虚拟机 (JVM) 会首先尝试从当前类加载器加载

    2024年03月12日
    浏览(34)
  • [Android]图片加载库Glide

    目录 Glide的介绍  Glide的基本使用   指定图片的格式 Glide占位符  指定图片的大小  过渡动画 图片变换 Generated API Glide的介绍 Glide是一个快速高效的Android图片加载库,可以自动加载网络,本地文件,app资源中的文件,注重于平滑的滚动。 开源地址:https://github.com/bumptech/gl

    2024年02月08日
    浏览(31)
  • Android AsyncLayoutInflater 异步加载布局

    AsyncLayoutInflater 是 Android 提供的 一个用于异步加载布局的 工具类 。可以在异步线程上加载布局文件,以 避免 在主线程上加载布局过于耗时而导致的 UI  卡顿 问题。 通常情况下,使用传统的 LayoutInflater 在主线程上加载布局时,如果布局文件较为复杂或包含大量视图,会导

    2024年02月11日
    浏览(32)
  • Python Pygame|实现GIF(gif)动图的加载和降帧【源码+解析】

            最近在使用 pygame 开发游戏,练习 python 编程。但遇到了一个问题,就是如何载入已有的GIF动图增强游戏的效果,在 csdn 搜索了一下,发现相关的文章比较少,缺少实例。于是自己研究了相关内容,找到了解决方案。本篇文章用游戏编程实例介绍 pygame 如何载入GI

    2024年04月14日
    浏览(29)
  • iOS学习-使用FLAnimatedImage加载Gif

    安装第三方库 引入头文件 FLAnimatedImage 新建一个FLAnimatedImageView  创建gif视图,可以使用本地文件或者url展示

    2024年02月15日
    浏览(32)
  • java以及android类加载机制

    java中,每一个类或者接口,在编译后,都会生成一个.class文件。 类加载机制指的是将这些.class文件中的二进制数据读入到内存中并对数据进行校验,解析和初始化。最终,每一个类都会在方法去保存一份元数据,在堆中创建一个与之对应的Class对象。 类的生命周期,经历7个

    2024年02月20日
    浏览(23)
  • Android之MediaPlayer加载视频慢

    问题:Android系统播放器MediaPlayer播放网络视频,加载慢...缓冲慢... 结论:视频元数据位置不对 简单解释就是,大部分的视频格式是MP4,MP4格式的视频是由一个个Box组成的。这个Box可以理解为数据块。Box里面可以嵌套Box: ftyp,moov,mdat就是Box的名字。这里需要重点关注的是

    2023年04月13日
    浏览(30)
  • Android 10.0 Settings 加载流程

    一、系统设置首页 代码路径:packages/app/Settings/ 1 主界面加载: Settings的主界面是Settings.java,但是从Settings.java来看,除了大量的静态类继承SettingsActivity,就无其他有效信息了。但看其xml定义可以发现targetActivity属性,实质应是SettingsHomepageActivity.java。 先看其xml配置: SettingsH

    2024年02月05日
    浏览(40)
  • 【unity】Android StreamingAssets加载文件

    unity 在 android环境中加载 StreamAssets文件会出问题 网上看看就有很多解决方法 其中大多数涉及Android底层去解决 底层方式 当然啦,Unity官方推荐使用UnityWebRequest类访问 UnityWebRequest 但是嘞,官方方法有个痛点,UnityWebRequest需要使用【协程】 我找到一个使用线程异步的方法解决

    2024年02月07日
    浏览(30)
  • Android启动页的加载优化

    现在市面上的app都有个启动页广告或者闪屏广告的过渡页,启动页的作用无非就是2个: 启动页的作用主要有以下几个方面: 提示应用正在加载 :启动页可以作为一个视觉指示,告诉用户应用正在启动和加载。这样用户在等待应用启动的过程中可以得到一个明确的反馈,避免

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包