很多时候由于项目的需要,我们需要加载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);
附:源码下载地址
本文介绍了在Android中如何加载Gif图片以实现动画效果,由于Android本身不支持直接加载,作者推荐了两个开源库:Xutils3.0和android-gif-drawable。尽管Xutils需要在BaseApplication初始化,但因为存在适配问题,作者不建议在项目中使用。

881

被折叠的 条评论
为什么被折叠?



