2015-06-25 45 views
1

我正在開發Android上的PacMan克隆,目前我在Android API 17上使用Netbeans IDE。我有一個華爲Y330手機(我正在開發它的設備),其分辨率爲480x800。我製作的地圖幾乎完全符合(寬度方向),這是一張380x420圖片。當我運行遊戲地圖的繪製有點過屏幕Android - 我如何正確適合遊戲的位圖?

Screenshot

我試着調整了SurfaceView但性格剛好消失在地圖的右側邊緣,我想這意味着它試圖畫出景色。我如何正確顯示圖像?我調整了精靈的大小,所以我不會在稍後調整它們。我猜這個問題不是位圖的大小,而是視圖本身的顯示。

public class Map 
{ 
    private final Bitmap mapImage; 

    public Map(Bitmap mapImage) 
    {   
     this.mapImage = mapImage; 
    } 

    public void draw(Canvas canvas) 
    { 
     canvas.drawBitmap(mapImage, 0, 0, null); 
    } 
} 

這是我繪製圖像的地方。

public MainGamePanel(Context context) 
{ 
    super(context); 
    getHolder().addCallback(this); 
    mainGame = new Game("Player", BitmapFactory.decodeResource(getResources(), R.drawable.stepff), 
         null, 
         BitmapFactory.decodeResource(getResources(), R.drawable.map)); 
    thread = new MainThread(getHolder(), this);  
    setFocusable(true); 
} 

這是我得到圖像的地方。

回答

0

您可以使用setFixedSize()調用來設置SurfaceView表面的大小。對於軟件渲染而言,無論如何,這通常都是一個好主意,因爲它可以防止性能嚴重下降,從而對具有大量像素的設備造成嚴重影響。 Surface的大小和它所呈現的大小是獨立的 - 如果Surface與視圖不匹配,Surface將被適當縮放。 (基於GLES的演示的視頻here。)

訣竅是讓縱橫比正確,您可以通過調整Surface本身的大小(如演示中所示),或者通過在視圖中放置邊框。添加邊框的一種方法是使用自定義的FrameLayout。 Grafika的AspectFrameLayout類演示瞭如何使用SurfaceView來完成此操作;有關示例,請參閱"Play video (SurfaceView)"活動。