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 上。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android-Developer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值