android中使用gif

现在很多app都可以看gif,可是android原生控件却不支持gif,所以要用到第三方,其实显示gif没啥好说的首选
可总是有特殊情况,像我就遇到公司要求用c语言处理gif,android-gif-drawable也是c语言写的,我嫌文件太多就去网上找了另一个c语言写的
这个只有6个文件,java层代码直接抛弃
其实使用Glide也可以显示gif,不过不太好,gif加载多了播放速度就巨慢
先来说说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,拿来用完全没问题,也是很强大的




猜你喜欢

转载自blog.csdn.net/u010302327/article/details/79045306