2017-07-31 186 views
0

我有一個使用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時,速度更快更平滑,但當它在手機上繪製時,速度會更慢並且更加分散。爲什麼這個問題能解決?

回答

0

關於大小 - 您實際顯示的是一個視圖,而不是gif流(您將流繪製到此視圖的畫布中)。你需要確保你已經爲這個視圖設置了正確的佈局參數 - 視圖可能有錯誤的大小。

關於gif的質量 - 我不能告訴你太多。它顯然取決於調用「draw」函數的速率。你可以查看android-gif-drawable,這應該有更好的表現。