程序只能加載GIF動畫的第一幀。效果如下:如果想要正常播放GIF動畫,需要借助Movie實" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Android播放GIF動畫

系統(tǒng) 2033 0
Android支持GIF動畫,但是如果利用ImageView標(biāo)簽直接寫在布局文件中:
    
<ImageView android:id="@+id/gifpicture" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:src="@drawable/animation"    />

  

程序只能加載GIF動畫的第一幀。效果如下:

Android播放GIF動畫
如果想要正常播放GIF動畫,需要借助Movie實現(xiàn)。寫了一個簡單示例,程序目錄結(jié)構(gòu)如下:

Android播放GIF動畫
animation.gif是需要播放的GIF動畫。
MainActivity實現(xiàn)了加載GIF動畫的功能。
    
public class MainActivity extends Activity { 
    
    private Movie mMovie; 
    private long mMovieStart;
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
       setContentView(new CustomGifView(this)); 
          }
    class CustomGifView extends View {
        public CustomGifView(Context context) { 
            super(context); 
            mMovie = Movie.decodeStream(getResources().openRawResource( 
                    R.drawable.animation));
        } 
        
        public void onDraw(Canvas canvas) {
            long now = android.os.SystemClock.uptimeMillis(); 
            
            if (mMovieStart == 0) { // first time 
                mMovieStart = now; 
            } 
            if (mMovie != null) { 
                
                int dur = mMovie.duration(); 
                if (dur == 0) { 
                    dur = 1000; 
                } 
                int relTime = (int) ((now – mMovieStart) % dur);                
                mMovie.setTime(relTime); 
                mMovie.draw(canvas, 0, 0); 
                invalidate(); 
            } 
        }
    }
}

  

內(nèi)部類CustomGifView 利用Movie播放GIF動畫。解釋一下:
    mMovie = Movie.decodeStream(getResources().openRawResource(R.drawable.animation));
  

將GIF動畫以文件流的形式轉(zhuǎn)換成Movie。
    
public void onDraw(Canvas canvas) {
        long now = android.os.SystemClock.uptimeMillis(); 
        
        if (mMovieStart == 0) { // first time 
            mMovieStart = now; 
        } 
        if (mMovie != null) { 
            
            int dur = mMovie.duration(); 
            if (dur == 0) { 
                dur = 1000; 
            } 
            int relTime = (int) ((now – mMovieStart) % dur);                
            mMovie.setTime(relTime); 
            mMovie.draw(canvas, 0, 0); 
            invalidate(); 
        } 
    }

  

?? invalidate();作用是刷新當(dāng)前View,這樣onDraw方法重復(fù)執(zhí)行,Movie就能畫出GIF動畫的每一幀。到此,GIF動畫就能正常播放了。

Android播放GIF動畫




源代碼見: http://bigcateasymorse.googlecode.com/svn/trunk/android_gif_demo/

Android播放GIF動畫


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区四区国产 | 国产精品国色综合久久 | 第三级视频在线观看 | 国模沟沟一区二区三区 | 欧美成人精品欧美一级 | 日日麻批的全部过程 | 成人福利在线视频免费观看 | 91国在线啪 | 午夜视频免费 成人 | 成人h视频在线 | 国产欧美日本亚洲精品五区 | 日韩免费一区 | 青青草免费国产线观720 | 国产下药迷倒白嫩美女96 | 久久精品国产视频 | 97在线观看视频 | 香蕉综合视频 | 91干b| 国产你懂得| 日韩一区二区三区在线观看 | 欧美成人午夜剧场 | 九九热在线精品 | 久久成人国产 | 久久一区二区三区99 | 日韩精品无码一区二区三区 | 91se在线看片国产免费观看 | 国产一二三四区中 | 2021年无线乱码播放高清完整 | 亚洲精品成人 | 欧美日韩手机在线观看 | 久草在线在线精品观看 | 一级毛片视频免费观看 | 99爱在线视频这里只有精品 | 国产色婷婷精品综合在线观看 | 欧美日韩亚洲区久久综合 | 人人爱人人爽 | 欧美综合中文字幕久久 | 日韩在线免费看网站 | 黄片毛片一级 | 久久99草| 免费精品美女久久久久久久久久 |