2012-11-20 69 views
0

我正在編寫一個使用Canvas作爲繪製所有東西的方式的Android遊戲,問題是當我在不同的android手機上運行它時,canvas不會改變大小,我嘗試使用canvas.scale( )但這並沒有使AI區別。我使用的圖是代碼...如何在Android中縮放帆布

public void draw(Canvas c, int score) 
{ 
    Obstical2[] obstmp = Queue.toArray(this.o); 
    Coin[] cointmp = QueueC.toArray(this.c); 

    for(int i = 0; i < obstmp.length; i++) 
    { 
     obstmp[i].draw(c); 
    } 

    for(int i = 0; i < cointmp.length; i++) 
    { 
     cointmp[i].draw(c); 
    } 
    c.drawText(String.format("%d", score), 20, 50, textPaint); 

    if(isWon && isStarted) c.drawText("YOU WON", 20, 400, resPaint); 
    else if(isLost && isStarted) c.drawText("YOU LOST", 20, 400, resPaint); 
} 

上面的函數調用實體的屏幕上的抽獎功能,論文功能如下

繪圖功能對於Obstical:

public void draw(Canvas c) 
{ 
    Log.i("D", "COIN"); 
    coin.draw(c); 
} 

繪圖功能進行了硬幣:

public void draw(Canvas c) 
{ 
    obstical.draw(c); 
} 

我如何才能讓畫布重新大小我t在任何屏幕上看起來都一樣嗎?

乾杯丹尼爾

回答

0

倍率onMeasure()函數和存在計算屏幕寬度和屏幕高度,然後計算比例。

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
     screen_width = MeasureSpec.getSize(widthMeasureSpec); 
     screen_height= MeasureSpec.getSize(heightMeasureSpec); 
} 
0

試試這個,這給U中的改變的屏幕尺寸

@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    // TODO Auto-generated method stub 
     super.onSizeChanged(w, h, oldw, oldh); 
     screen_width = w; 
     screen_height= h; 
}