Android:Gif不填充屏幕

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,这应该有更好的表现。