2014-07-11 19 views
0

我正在製作一張放置在原始目錄中的gif圖片的動態壁紙,無論我使用何種設備,我怎樣才能將gif放在屏幕中央?我明白爲什麼我的代碼現在將它放在左側,因爲display.getWidth-display.getWidth = 0,並且與高度相同,因此(0,0)位於左上角。但是什麼是中心?我似乎無法理解我的生活。這個類正在擴展WallpaperService。如何在動態壁紙中居中放映GIF

@Override 
    public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
     super.onSurfaceChanged(holder, format, width, height); 


     mScaleX = width/(1.5f*mNyan.width()); 
     mScaleY = height/(1.5f*mNyan.height()); 
     Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 

     mWidth = (display.getWidth()-display.getWidth()); 
     mHeight = (display.getHeight()-display.getHeight()); 





     nyan(); 
    } 

,這是我畫的畫布結束...

void nyanNyan(Canvas canvas) { 

     canvas.save(); 
     canvas.scale(mScaleX, mScaleY); 
     mNyan.setTime(mWhen); 
     mNyan.draw(canvas, mWidth,mHeight); 
     canvas.restore(); 
    } 

誰能幫助!?!我被困住了,我無法移過去。我也試過了,沒有任何的運氣:

void nyanNyan(Canvas canvas) { 

     canvas.save(); 
     canvas.scale(mScaleX, mScaleY); 
     mNyan.setTime(mWhen); 
     mNyan.draw(canvas, mCenterX - mNyan.width() , mCenterY - mNyan.height()); 
    } 

回答

1

正如我不完全理解你的代碼(例如在瓦爾像mCenterX來自或他們是如何定義的),我不能出示擔保的代碼無需進一步調整正常運行。

假設你有機會獲得吳年的寬度和高度(我稱之爲nyan.getWidth())和畫布的尺寸,那麼你最後mNyan.draw()電話或許應該是這樣的:

mNyan.draw(
    canvas, 
    (canvas.getWidth() - nyan.getWidth())/2, 
    (canvas.getHeight() - nyan.getHeight())/2 
);