私は画像ビューでGIFファイルを再生したいAndroidアプリケーションを作成しています。私は多くの方法を試してみましたが、カスタムクラスを作成しましたが成功しませんでした。画像ビューでアニメーションGIF画像ファイルを再生する
誰もこれを前に実装しましたか?
私は画像ビューでGIFファイルを再生したいAndroidアプリケーションを作成しています。私は多くの方法を試してみましたが、カスタムクラスを作成しましたが成功しませんでした。画像ビューでアニメーションGIF画像ファイルを再生する
誰もこれを前に実装しましたか?
サンプルコードはAndroid SDKのサンプルで見つけることができます。 GIF画像がImageView
以外のGIF画像を使用するView
コードを拡張アクティビティに表示されているが
import android.app.Activity;
import android.content.Context;
import android.graphics.*;
import android.graphics.drawable.*;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
public class BitmapDecode extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
private static class SampleView extends View {
private Bitmap mBitmap;
private Bitmap mBitmap2;
private Bitmap mBitmap3;
private Bitmap mBitmap4;
private Drawable mDrawable;
private Movie mMovie;
private long mMovieStart;
private static byte[] streamToBytes(InputStream is) {
ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
byte[] buffer = new byte[1024];
int len;
try {
while ((len = is.read(buffer)) >= 0) {
os.write(buffer, 0, len);
}
} catch (java.io.IOException e) {
}
return os.toByteArray();
}
public SampleView(Context context) {
super(context);
setFocusable(true);
java.io.InputStream is;
is = context.getResources().openRawResource(R.drawable.beach);
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bm;
opts.inJustDecodeBounds = true;
bm = BitmapFactory.decodeStream(is, null, opts);
// now opts.outWidth and opts.outHeight are the dimension of the
// bitmap, even though bm is null
opts.inJustDecodeBounds = false; // this will request the bm
opts.inSampleSize = 4; // scaled down by 4
bm = BitmapFactory.decodeStream(is, null, opts);
mBitmap = bm;
// decode an image with transparency
is = context.getResources().openRawResource(R.drawable.frog);
mBitmap2 = BitmapFactory.decodeStream(is);
// create a deep copy of it using getPixels() into different configs
int w = mBitmap2.getWidth();
int h = mBitmap2.getHeight();
int[] pixels = new int[w*h];
mBitmap2.getPixels(pixels, 0, w, 0, 0, w, h);
mBitmap3 = Bitmap.createBitmap(pixels, 0, w, w, h,
Bitmap.Config.ARGB_8888);
mBitmap4 = Bitmap.createBitmap(pixels, 0, w, w, h,
Bitmap.Config.ARGB_4444);
mDrawable = context.getResources().getDrawable(R.drawable.button);
mDrawable.setBounds(150, 20, 300, 100);
is = context.getResources().openRawResource(R.drawable.animated_gif);
if (true) {
mMovie = Movie.decodeStream(is);
} else {
byte[] array = streamToBytes(is);
mMovie = Movie.decodeByteArray(array, 0, array.length);
}
}
@Override protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFCCCCCC);
Paint p = new Paint();
p.setAntiAlias(true);
canvas.drawBitmap(mBitmap, 10, 10, null);
canvas.drawBitmap(mBitmap2, 10, 170, null);
canvas.drawBitmap(mBitmap3, 110, 170, null);
canvas.drawBitmap(mBitmap4, 210, 170, null);
mDrawable.draw(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, getWidth() - mMovie.width(),
getHeight() - mMovie.height());
invalidate();
}
}
}
}
は、あなたが同様に
http://weavora.com/blog/2012/02/07/android-how-to-use-animated-gif/
http://droid-blog.net/2011/10/14/tutorial-how-to-use-animated-gifs-in-android-part-1/
をこれらのリンクを使用することができますですwhoaa ...単純なGIFを表示するには、このたくさんのコードを記述する必要がありますか?システムを変更する必要がある –
ネイティブImageViewはアニメーションイメージをサポートしていません。 あなたは、アニメーションGIFファイルに
を表示するために2つのオプションを使用しますが、いくつかの部分にgifファイルを分割し、それにアニメーションを適用することができます。このlink-playing-gif-animationを試してみると、望みの結果が得られます。
VideoViewを使ってどのようにできるか教えていただけますか? –
@SHAKIRSHABBIR http://stackoverflow.com/a/26712205/945247 – Leon
Gifをアンドロイドはサードパーティのライブラリを使用せずに。これが私のやり方です。
ウェブビューをご覧ください。
<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageWebView" />
ほとんどの例では、アセットフォルダからファイルを開く方法を示していますが、ここではSDカード/メモリからファイルを開く方法を示します。
WebView webView = (WebView) findViewById(R.id.imageWebView);
String data = "<body> <img src = \""+ filePath+"\"/></body>";
// 'filePath' is the path of your .GIF file on SD card.
webView.loadDataWithBaseURL("file:///android_asset/",data,"text/html","UTF-8",null);
[アンドロイド - アニメーションGIFを表示する]の可能な重複(http://stackoverflow.com/questions/3660209/android-display-animated-gif) –
この参照http://stackoverflow.com/questions/ 9158310/and-it-possible-to-set-an-animated-gif-file-as-live-wallpaper-in-android – Aerrow