先声明这篇文章是转载的,另外引用原文一位大神的回复,如果程序无法正常使用:
" 4.0以上版本的安卓系统一般启用了硬件加速功能,无法播放此程序的gif,需要在AndroidManifest里面添加android:hardwareAccelerated="false"禁止掉硬件加速才可以正常播放。 "
正文:
教你轻松显示Gif图片

大家都知道,Android开发模拟器为了节省内存,一般不支持直接显示gif图片,即使你强制设置了,也只会显示图片的第一帧。看到网上也有许多的方法,来实现此功能,可都比较的繁琐,需要修改android源代码来实现或者用gif解析器来实现。在此文章中,这里教大家一种比较简洁的一个方法,你可以把这个类当做是一种工具类。用的时候,直接搬到程序里面,更改下图片的资源,就可以非常轻松的显示gif图片了。


步骤1看一下这个工具类的实例代码:MyGifView.java

importandroid.content.Context;

importandroid.graphics.Canvas;

importandroid.graphics.Movie;

importandroid.util.AttributeSet;

importandroid.view.View;

publicclassMyGifViewextendsView{

privatelongmovieStart;

privateMoviemovie;

//此处必须重写该构造方法

publicMyGifView(Contextcontext,AttributeSetattributeSet){

super(context,attributeSet);

//以文件流(InputStream)读取进gif图片资源

movie=Movie.decodeStream(getResources().openRawResource(R.drawable.keyboard));

}

@Override

protectedvoidonDraw(Canvascanvas){

longcurTime=android.os.SystemClock.uptimeMillis();

//第一次播放

if(movieStart==0){

movieStart=curTime;

}

if(movie!=null){

intduraction=movie.duration();

intrelTime=(int)((curTime-movieStart)%duraction);

movie.setTime(relTime);

movie.draw(canvas,0,0);

//强制重绘

invalidate();

}

super.onDraw(canvas);

}

}

此工具类中,只做了2件事情。1,构造方法;2,重写了onDraw()方法。大家以后用的话,只需拷贝此类到你的工程下即可起作用。


步骤2布局文件代码activity_main.xml

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:text="====Gif图片测试布局===="

android:layout_height="wrap_content"

android:layout_width="wrap_content"

/>

<com.example.showgifimage.MyGifView

android:id="@+id/iv"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:layout_margin="20dp"

/>

</LinearLayout>

布局文件中,注意的是:标签的设置<com.example.showgifimage.MyGifView/>.

格式:包名+.类名


步骤3:activity中调用

publicclassMainActivityextendsActivity{

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

刷下存在感,实测可行,原文地址
http://blog.sina.com.cn/s/blog_73c5cfbe0101b6w5.html#cmt_2840629

更多相关文章

  1. Android图灵机器人的实现(一)
  2. 详解android 接口回调
  3. Android中TouchEvent触摸事件机制
  4. Android游戏开发之旅系列一
  5. Android画图之抗锯齿(转)
  6. Android(安卓)事件分发
  7. Android(安卓)国际化笔记
  8. android开发怎样让悬浮Activity只是隐藏而不销毁
  9. Appium 测试,实现上下、左右滑动页面【Android,iOS 已验证】

随机推荐

  1. AttachCurrentThread报错
  2. 如何编译Android的kernel
  3. Android(安卓)ListView分页加载数据Demo
  4. Java 回顾笔记 1
  5. android APK签名过程之MANIFEST.MF分析
  6. Android(安卓)单例模式与SharedPreferenc
  7. Android(安卓)App的签名打包(晋级篇)
  8. Android(安卓)应用开发笔记 - 下拉列表(Sp
  9. Android百度地图应用开发的前期准备
  10. Android(安卓)自定义View(二)函数分析