Android 加载gif图,Glide
个人中心
Android 可以使用 Glide、Picasso、Fresco 等第三方库来加载 gif 图。
以 Glide 为例,可以按照以下步骤加载 gif 图:
在 build.gradle 文件中添加 Glide 的依赖:
```
dependencies {
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
}
```
在布局文件中添加 ImageView 控件:
```
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
在代码中使用 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 上。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341