Android显示GIF图片实例详解

  

<强> Android显示GIF图片实例详解

  

gif图动画在Android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个。经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示代码,我下载过几个,但是都不是很理想,不是我完全想要的,所以有时候就得自己学会总结,把开源的东西整理成自己的,现在无聊,也正好有朋友需要,所以现在整理了一下,留着以后备用!
  

  

废话不多说,直接上图:

  

 Android显示GIF图片实例详解

  

 Android显示GIF图片实例详解

  

在这里主要用的是:android中的android.graphics。电影这个类,这是android提供给我们的一个非常方便的工具。
  首先,重写控件来看,自定义一个展示gif图的GifView,代码如下:
  

        包net.loonggg.gif.view;      进口net.loonggg.gif.R;   进口android.annotation.SuppressLint;   进口android.content.Context;   进口android.content.res.TypedArray;   进口android.graphics.Canvas;   进口android.graphics.Movie;   进口android.os.Build;   进口android.util.AttributeSet;   进口android.view.View;      公开课GifView扩展视图{/* *   *默认为1秒   */私有静态最终int DEFAULT_MOVIE_DURATION=1000;      私人int mMovieResourceId;      私人电影mMovie;      私人长mMovieStart;      私人int mCurrentAnimationTime=0;      私人mLeft浮动;      私人浮动mTop;支持      私人mScale浮动;      私人int mMeasuredMovieWidth;      私人int mMeasuredMovieHeight;      私人布尔mVisible=true;      私人动荡的布尔mPaused=false;      公共GifView(上下文语境){   这(上下文,null);   }      公共GifView(上下文语境,AttributeSet attrs) {   这(上下文、attrs R.styleable.CustomTheme_gifViewStyle);   }      公共GifView(上下文语境、AttributeSet attrs int defStyle) {   超级(上下文、attrs defStyle);   setViewAttributes(上下文、attrs defStyle);   }      @SuppressLint (“NewApi”)   私人空间setViewAttributes(上下文语境、AttributeSet attrs   int defStyle) {   如果(Build.VERSION。SDK_INT祝辞=Build.VERSION_CODES.HONEYCOMB) {   setLayerType(视图。LAYER_TYPE_SOFTWARE, null);   }//从描述文件中读出gif的值,创建出电影实例   最后TypedArray数组=context.obtainStyledAttributes (attrs,   R.styleable。GifView、defStyle R.style.Widget_GifView);   mMovieResourceId=array.getResourceId (R.styleable。GifView_gif, 1);   mPaused=array.getBoolean (R.styleable。GifView_paused、假);   array.recycle ();   如果(mMovieResourceId !=1) {   mMovie=Movie.decodeStream (getresource () .openRawResource (   mMovieResourceId));   }   }/* *   *设置gif图资源   *   * @param movieResId   */公共空间setMovieResource (int movieResId) {   这一点。mMovieResourceId=movieResId;   mMovie=Movie.decodeStream (getresource () .openRawResource (   mMovieResourceId));   requestLayout ();   }      公共空间setMovie(电影电影){   这一点。mMovie=电影;   requestLayout ();   }      公共电影getMovie () {   返回mMovie;   }      公共空间setMovieTime (int) {   mCurrentAnimationTime=时间;   无效();   }/* *   *设置暂停   *   * @param停顿了一下   */公共空setPaused(布尔停下来){   这一点。mPaused=停了下来;   如果(!暂停){   mMovieStart=android.os.SystemClock.uptimeMillis ()   ——mCurrentAnimationTime;   }   无效();   }/* *   *判断gif图是否停止了   *   * @return   */公共布尔isPaused () {   返回this.mPaused;   }      @Override   保护空白>   & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android "   android: layout_width="宽和"   android: layout_height="宽和"   面向android:=按怪薄北?      & lt; net.loonggg.gif.view.GifView   android: id=癅 + id/gif1”   android: layout_width=" 100 dp”   android: layout_height=" 100 dp”   android: layout_gravity=" center_horizontal "   android:启用=" false "/比;      & lt; net.loonggg.gif.view.GifView   android: id=癅 + id/gif2”   android: layout_width=" 200 dp”   android: layout_height=" 200 dp”   android: layout_gravity=" center_horizontal "   android:启用=" false "/比;      & lt;/LinearLayout>   

Android显示GIF图片实例详解