android中加载Gif图片

本文介绍了在Android中如何加载Gif图片以实现动画效果,由于Android本身不支持直接加载,作者推荐了两个开源库:Xutils3.0和android-gif-drawable。尽管Xutils需要在BaseApplication初始化,但因为存在适配问题,作者不建议在项目中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       很多时候由于项目的需要,我们需要加载Gif的图片,实现动画效果,但是android本身并不支持直接加载Gif图片。因此网络上出现了很多关于android加载Gif图片的框架。今天在这里就为大家介绍其中的两个框架,一个是Xutils3.0,一个是android-gif-drawable的开源库。其中使用Xutils会出现适配的问题。所以这里不推荐在项目使用。
实现加载的效果

MainActivity.java

public class MainActivity extends Activity implements View.OnClickListener {
    private Button mFirst;//使用android开源库加载
    private Button mSecond;//使用xutils加载
    private Context mContext;
    private Intent mIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this;
        initView();
    }

    //初始化View
    private void initView() {
        mFirst = (Button) findViewById(R.id.btn_gif);
        mSecond = (Button) findViewById(R.id.btn_xutils);
        mFirst.setOnClickListener(this);
        mSecond.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_gif:
                mIntent = new Intent(mContext, GifImageViewActivity.class);
                startActivity(mIntent);
                break;
            case R.id.btn_xutils:
                mIntent = new Intent(mContext, XutilsActivity.class);
                startActivity(mIntent);
                break;
        }
    }
}
GifImageViewActivity.java

public class GifImageViewActivity extends Activity {
    private GifImageView mGifImageView;//显示Gif的GifImageView

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gif_imageview);
        initView();
    }

    //初始化View
    private void initView() {
        mGifImageView = (GifImageView) findViewById(R.id.imageView);
        //gif 代码控制播放速度
        try {
            GifDrawable gifDrawable = new GifDrawable(getResources(), R.drawable.test);
            gifDrawable.setSpeed(0.6f);
            mGifImageView.setImageDrawable(gifDrawable);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
XutilsActivity.java

public class XutilsActivity extends Activity {
    private ImageView mImageView;//显示gif的imageview

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xutils);
        initView();
    }

    //初始化View
    private void initView() {
        mImageView = (ImageView) findViewById(R.id.xutils_imageview);
        ImageOptions imageOptions = new ImageOptions.Builder()
                .setIgnoreGif(false)//是否忽略gif图。false表示不忽略。不写这句,默认是true
                .setImageScaleType(ImageView.ScaleType.FIT_CENTER)
                .build();
        x.image().bind(mImageView, "assets://test.gif", imageOptions);
    }
}
activity_gif_imageview.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
    android:background="#ffffff"
     android:layout_height="match_parent">
    <pl.droidsonroids.gif.GifImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:scaleType="fitCenter"
        android:id="@+id/imageView"
        android:layout_marginRight="30dp"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp"/>
</RelativeLayout>

注:使用Xutils时需要在BaseApplication进行初始化x.Ext.init(this);
附:源码下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值