【发布时间】:2018-01-07 03:19:07
【问题描述】:
我有一个使用 Movie 对象在 Canvas 对象上绘制的 gif。 gif 的分辨率为 1920x1080 像素,但仅占屏幕的四分之一左右。我如何让它扩展到屏幕上,考虑到 gif 的大小是 1920x1080,为什么它还没有这样做?
这是我绘制 gif 并初始化 Movie 对象的代码。
public SplashEnvironment(Context context, Activity act) {
super(context);
getHolder().addCallback(this);
this.act = act;
InputStream is = context.getResources().openRawResource(+ R.drawable.resized);
mMovie = Movie.decodeStream(is);
System.out.println(mMovie.width() + "x" + mMovie.height());
System.out.println(getWidth() + "x" + getHeight());
}
public void draw(Canvas canvas) {
if(canvas != null) {
super.draw(canvas);
Paint p = new Paint();
p.setAntiAlias(true);
long now = android.os.SystemClock.uptimeMillis();
if(mMovieStart == 0)
mMovieStart = now;
if(mMovie != null) {
int dur = mMovie.duration();
if(dur == 0)
dur = 3000;
int relTime = (int)((now - mMovieStart) % dur);
mMovie.setTime(relTime);
mMovie.draw(canvas, 0, 0);
act.runOnUiThread(new Runnable() {
public void run() {
invalidate();
}
});
}
}
}
然后我还有另一个问题,尽管不那么重要。当我在 Windows 中查看 gif 时,速度更快、更流畅,但在手机上绘制时速度更慢、更不稳定。为什么会这样,可以修复吗?
【问题讨论】:
标签: java android canvas draw gif