<强> Android显示GIF图片实例详解强>
gif图动画在Android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个。经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的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图片实例详解