2011-10-23 23 views
3

私のAndroidアプリケーションでは、私はgifを表示するためにMovieを使用していますが、私は直面している問題は、画像の1フレームだけで空白の画面を表示している。
gifをAndroidで表示するには、より良い方法を教えてください。
私が使用していたコードはandroidのgif画像を処理する

public MYGIFView(Context context, InputStream is, int i, int j,int screenWidth,int screenHeight) { 
    super(context); 

    //is=context.getResources().openRawResource(red); 
    movie=Movie.decodeStream(is); 
    xcoordinate = i; 
    ycoordinate = j; 
    viewWidth = screenWidth; 
    viewHeight = screenHeight; 


    setLayoutParams(new LayoutParams(viewWidth,viewHeight)); 

} 

@Override 
protected void onDraw(Canvas canvas) { 
    if(movie != null) { 
     long now = android.os.SystemClock.uptimeMillis(); 
     int dur = Math.max(movie.duration(), 1); // is it really animated? 
     int pos = (int)(now % dur); 
     movie.setTime(pos); 
     movie.draw(canvas,xcoordinate, ycoordinate); 
    } 

答えて

0

これにAPI demos itself provides a solutionです。

私はあなたが欠けているものは、この映画のトリガーであると思う。ムービーの期間が終わって、まで再描画を引き起こし、

Handler handler = new Handler(); 
new Thread() { 
    @Override public void run() { 
     // ... setup the movie (using the code from above) 
     // ... create and display the custom view, passing the movie 

     while(!Thread.currentThread().isInterrupted()) { 
      handler.post(new Runnable() { 
       public void run(){ 
        view.invalidate(); 
       } 
      }); 
      try { 
       Thread.sleep(50); // yields 20 fps 
      } catch (InterruptedException e) { 
       Thread.currentThread().interrupt(); 
      } 
     } 
    } 
}.start(); 

やAPIのデモが示すようにonDraw()イベント自体でビューを無効にする:

はこれを行います。

+0

Thread.sleep(50); //収率は20fps あなたのために新しい地獄を作る必要があります –

0

私はこのように、アンドロイドで動作するgifファイルを試してみました。

MainActivity.java

package com.example.gifview; 
import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     GifWebView view = new GifWebView(this, "file:///android_asset/earth.gif"); 
     setContentView(view); 
    } 



} 

GifWebView.java

package com.example.gifview; 

import android.content.Context; 
import android.webkit.WebView; 

public class GifWebView extends WebView { 

    public GifWebView(Context context, String path) { 
     // TODO Auto-generated constructor stub 
     super(context); 
     loadUrl(path); 
    } 

} 

注:画像を.GIFロードすることはできませんactivity_main.xml

0

での編集の必要がありませんAndroidに直接。

あなたはImageSwitcherや他の方法でそれを行うことができます。 このリンクも参照してください。Adding gif image in an ImageView in android