您的位置:首页 > 移动开发 > Android开发

android中使用gif

2018-01-12 16:53 417 查看
现在很多app都可以看gif,可是android原生控件却不支持gif,所以要用到第三方,其实显示gif没啥好说的首选
android-gif-drawable

可总是有特殊情况,像我就遇到公司要求用c语言处理gif,android-gif-drawable也是c语言写的,我嫌文件太多就去网上找了另一个c语言写的
AndLibNsgif

这个只有6个文件,java层代码直接抛弃
其实使用Glide也可以显示gif,不过不太好,gif加载多了播放速度就巨慢
glide
先来说说android-gif-drawable吧,使用简单

<pl.droidsonroids.gif.GifImageView
android:id="@+id/gif_image_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/test3"
/>


java加载也简单

try {
GifImageView gifImageView = findViewById(R.id.gif_image_view);
GifDrawable gifFromResource = new GifDrawable( getResources(), R.drawable.test4 );
gifImageView.setImageDrawable(gifFromResource);
} catch (IOException e) {
e.printStackTrace();
}


还支持各种加载方式,就不一 一列举了
GifDrawable可对gif进行操作,start(),stop()之类的,网上对它的说明很多就不说了
再来说Glide加载gif

GlideApp.with(this).load(R.drawable.test4).into(imageview);


也是很简单的,操作gif也是使用GifDrawable,可以这样获取GifDrawable

GlideApp.with(this).load(R.drawable.test4).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}

@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
GifDrawable gifDrawable = (GifDrawable) resource;
return false;
}
}).into(imageView);


也就是调用start()或stop()
如果应用gif使用的多,推荐用android-gif-drawable如果不多就用Glide也能应付
最后说说AndLibNsgif,效率是有的,不过java代码bug太多,只是一个简单的移植,不过c代码没什么bug,拿来用完全没问题,也是很强大的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: