gpt4 book ai didi

java - 有关 Android 电影类的信息

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:49 27 4
gpt4 key购买 nike

我正在尝试显示动画 gif。顺便说一下,我正在用类 Movie 做这件事.但是 Android 开发者页面不提供有关这些方法的信息。

如何调整 gif 的大小以适应布局?

提前致谢

最佳答案

我一直在尝试使用 this 做同样的事情(显示动画 GIF)方法。

它仅在您指定 uses-sdk android:minSdkVersion="3"时有效

用于缩放...

package com.example.GIFShow;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.graphics.Rect;
import android.util.Log;
import android.view.View;


class MYGIFView extends View {

private static final boolean twigDebug = true;

private Movie mMovie;
private long mMovieStart;

MYGIFView(Context aContext, Movie aMovie) {
super(aContext);

if (aMovie == null)
return;

mMovie = aMovie;
mMovieStart = android.os.SystemClock.uptimeMillis();
}

protected void onDraw(Canvas aCanvas) {
super.onDraw(aCanvas);

if (mMovie == null || mMovie.duration() == 0)
return;

int relTime = (int)((android.os.SystemClock.uptimeMillis() - mMovieStart)
% mMovie.duration());
mMovie.setTime(relTime);

Bitmap movieBitmap = Bitmap.createBitmap(mMovie.width(), mMovie.height(),
Bitmap.Config.ARGB_8888);
Canvas movieCanvas = new Canvas(movieBitmap);
mMovie.draw(movieCanvas, 0, 0);

Rect src = new Rect(0, 0, mMovie.width(), mMovie.height());
Rect dst = new Rect(0, 0, this.getWidth(), this.getHeight());
aCanvas.drawBitmap(movieBitmap, src, dst, null);

this.invalidate();
}

}

现在您可以通过以下两种方式之一获取 Movie 对象并将其传递给类 ...

从项目可绘制文件夹中获取输入 GIF Movie 对象

    Movie movie = Movie.decodeStream
(context.getResources().openRawResource(R.drawable.somefile));

或者从外部存储中获取输入的 GIF Movie 对象(/mnt/sdcard .../mnt/extSdCard ... 等)

    Movie movie = null;
try {
FileInputStream stream =
new FileInputStream(Environment.getExternalStorageDirectory() +
"/somefolder/somefile.gif");
try {
byte[] byteStream = streamToBytes(stream);
movie = Movie.decodeByteArray(byteStream, 0, byteStream.length);
}
finally {
stream.close();
}
}
catch (IOException e) { }

现在将移动的 GIF 图像/电影对象设置到您的 Activity View 中:

    View view = new MYGIFView(this, movie);
setContentView(view);

如果您从外部存储中获取 GIF 图像/电影对象(第二个示例),您将需要支持例程:

private 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();
}

关于java - 有关 Android 电影类的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com