Android:Gif不填充屏幕
问题描述:
我有一个使用Movie
对象绘制Canvas
对象的gif。 gif的分辨率为1920x1080像素,但只能填满屏幕的四分之一左右。我如何才能将它扩展到屏幕上,为什么它已经这样做了,因为GIF的尺寸是1920x1080?Android:Gif不填充屏幕
这里是我绘制gif并初始化对象的代码。
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时,速度更快更平滑,但当它在手机上绘制时,速度会更慢并且更加分散。为什么这个问题能解决?
答
关于大小 - 您实际显示的是一个视图,而不是gif流(您将流绘制到此视图的画布中)。你需要确保你已经为这个视图设置了正确的布局参数 - 视图可能有错误的大小。
关于gif的质量 - 我不能告诉你太多。它显然取决于调用“draw”函数的速率。你可以查看android-gif-drawable,这应该有更好的表现。