日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)Android → Android 平臺(tái)實(shí)現(xiàn)Gif 圖像解碼并播放代碼及組件

      Android 平臺(tái)實(shí)現(xiàn)Gif 圖像解碼并播放代碼及組件

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2011/1/14 0:33:44字體大。A-A+

      作者:佚名點(diǎn)擊:834次評(píng)論:0次標(biāo)簽: Android 解碼

      • 類(lèi)型:文件處理大。209KB語(yǔ)言:中文 評(píng)分:7.0
      • 標(biāo)簽:
      立即下載
       Android 播放GIF之前就有過(guò)一篇文章是講述如何使用GIF文件并播放?梢酝ㄟ^(guò) 這里 了解關(guān)于播放GIF的一種方法。

        如果前面有了解過(guò)的朋友肯定知道這上面的做法比較麻煩,又要去分解圖片,又要寫(xiě)各種麻煩的XML文件,有點(diǎn)郁悶,而且還帶來(lái)的直接后果是一個(gè)比較多動(dòng)作的GIF圖片可能會(huì)將項(xiàng)目的體積變大,這點(diǎn)很多朋友都無(wú)法接受。不過(guò)這樣的好處也顯而易見(jiàn),就是運(yùn)行的速度會(huì)比你去解碼的速度要快。

        以下這種方法是需要解碼,但是速度的話(huà)保證不了,可能開(kāi)線程的時(shí)候沒(méi)有處理好吧,以下面這張圖片為例做解碼播放:

        首先,先編寫(xiě)一個(gè)GIF解碼的幫助類(lèi),該類(lèi)提供了幾個(gè)操作GIF圖片的方法,比如圖片的初始化呀,切換圖片呀,獲得整個(gè)GIF的組合數(shù)量等等,由于代碼量太多,這里就不列出來(lái),后面會(huì)提供源碼供大家參考,可于源碼內(nèi)找到該幫助類(lèi)。

       之后,編寫(xiě)一個(gè)用于可顯示Gif 的組件,繼承自View 并實(shí)現(xiàn)了Runable,代碼如下:

       package com.terry.gif;

      import android.content.Context;
      import android.content.res.TypedArray;
      import android.graphics.Bitmap;
      import android.graphics.Canvas;
      import android.graphics.Paint;
      import android.util.AttributeSet;
      import android.view.View;

      public class TypegifView extends View implements Runnable {
          gifOpenHelper gHelper;
          private boolean isStop = true;
          int delta;
          String title;

          Bitmap bmp;

          // construct - refer for java
          public TypegifView(Context context) {
              this(context, null);

          }

          // construct - refer for xml
          public TypegifView(Context context, AttributeSet attrs) {
              super(context, attrs);
      //添加屬性
              TypedArray ta = context.obtainStyledAttributes(attrs,
                      R.styleable.gifView);
              int n = ta.getIndexCount();

              for (int i = 0; i < n; i++) {
                  int attr = ta.getIndex(i);

                  switch (attr) {
                  case R.styleable.gifView_src:
                      int id = ta.getResourceId(R.styleable.gifView_src, 0);
                      setSrc(id);
                      break;

                  case R.styleable.gifView_delay:
                      int idelta = ta.getInteger(R.styleable.gifView_delay, 1);
                      setDelta(idelta);
                      break;

                  case R.styleable.gifView_stop:
                      boolean sp = ta.getBoolean(R.styleable.gifView_stop, false);
                      if (!sp) {
                          setStop();
                      }
                      break;
                  }

              }

              ta.recycle();
          }

          /**
           * 設(shè)置停止
           * 
           * @param stop
           */
          public void setStop() {
              isStop = false;
          }

          /**
           * 設(shè)置啟動(dòng)
           */
          public void setStart() {
              isStop = true;

              Thread updateTimer = new Thread(this);
              updateTimer.start();
          }

          /**
           * 通過(guò)下票設(shè)置第幾張圖片顯示
           * @param id
           */
          public void setSrc(int id) {

              gHelper = new gifOpenHelper();
              gHelper.read(TypegifView.this.getResources().openRawResource(id));
              bmp = gHelper.getImage();// 得到第一張圖片
          }

          public void setDelta(int is) {
              delta = is;
          }

          // to meaure its Width & Height
          @Override
          protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
              setMeasuredDimension(measureWidth(widthMeasureSpec),
                      measureHeight(heightMeasureSpec));
          }

          private int measureWidth(int measureSpec) {
              return gHelper.getWidth();
          }

          private int measureHeight(int measureSpec) {
              return gHelper.getHeigh();
          }

          protected void onDraw(Canvas canvas) {
              // TODO Auto-generated method stub
              canvas.drawBitmap(bmp, 0, 0, new Paint());
              bmp = gHelper.nextBitmap();

          }

          public void run() {
              // TODO Auto-generated method stub
              while (isStop) {
                  try {
                      this.postInvalidate();
                      Thread.sleep(gHelper.nextDelay() / delta);
                  } catch (Exception ex) {

                  }
              }
          }

      }

       基礎(chǔ)功能實(shí)現(xiàn)后?赏ㄟ^(guò)view.start()開(kāi)啟GIF的播放,或者view.stop()停止GIF的播放,代碼如下:

       setContentView(R.layout.main);
              Button btn = (Button) findViewById(R.id.Button01);
              Button btn2 = (Button) findViewById(R.id.Button02);
              final TypegifView view = (TypegifView) findViewById(R.id.gifView1);

              btn.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View v) {
                      view.setStop();
                  }
              });

              btn2.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View v) {
                      view.setStart();
                  }
              });

       

      顯示效果:

       

        hosts修復(fù)軟件
        (60)hosts修復(fù)軟件
        文件是計(jì)算機(jī)中一個(gè)舉足輕重的文件,該文件有一個(gè)比較大的特點(diǎn)就是沒(méi)有擴(kuò)展名。經(jīng)常在一些電腦個(gè)性技巧以及其他領(lǐng)域方面會(huì)用到,西西提供文件修復(fù)工具軟件下載大全。官方介紹是一個(gè)沒(méi)有擴(kuò)展名的系統(tǒng)文件,可以用記事本等工具打開(kāi),其作用就是將一些常用的網(wǎng)址域名與其對(duì)應(yīng)的地址建立一個(gè)關(guān)聯(lián)數(shù)據(jù)庫(kù),當(dāng)用戶(hù)在瀏覽器中輸入一個(gè)需要登錄的網(wǎng)址時(shí),系統(tǒng)會(huì)首先自動(dòng)從文件中尋找對(duì)應(yīng)的地址,一旦找到系統(tǒng)會(huì)立即打開(kāi)對(duì)應(yīng)網(wǎng)頁(yè),如果沒(méi)有找...更多>>

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門(mén)評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱(chēng):
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)