android中使用gif

现在很多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,拿来用完全没问题,也是很强大的

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值