Androidで、アニメーションがあるgifをImageViewで表示させることはできません。で、アニメーションを含むgifを表示させるには、以下の方法があるみたいです。
  • android.graphics.Movieを使う
  • gifからBitmapを抜き出して表示させる
  • webViewを使って表示する

で、一番簡単そうなWebViewを使って、gifを表示させたいと思います!WebViewは重たいとか言ってるブログも見かけたので、アプリのスピードを気にする人にはお勧めしません。だけど、超簡単。

webviewを拡張したviewクラスを作成

public class GifWebView extends WebView {

	public GifWebView(Context context, String path) {
		super(context);
		loadUrl(path);
	}
}
これだけ!あとは、GifWebViewを作成するときに、表示したいgifのパスを渡してやればいいだけ!

きっとだいたいこんな感じ

LinearLayout target = (LinearLayout)findViewById(R.id.insertTarget);

//.gifが無いと表示してくれないみたいです
String path = "somewhere.gif";

//端末内のファイルを読み込む場合は、file:///をつけないといけないみたい
GifWebView gif = new GifWebView(this,  "file:///" + path);

//gifをインサート
target.addView(gif);

Activity内から呼び出しています。また、このActivityで使うレイアウトにidがinsertTargetのLinearLayoutを設置しています。


pathでは、gifが保存されている場所を指定してください。また、拡張子がついてないとgifとして読み込んでくれないみたいです。あと、Android端末内のファイルを指定する場合は、file:///をつけないといけないみたいです。gifがウェブ上のどこかにある場合は、http://でいいのではないかと勝手に思ってます。