2011-01-13 167 views
0

我有早期的簡單2D益智遊戲,我創建它擴展視圖和一切順利,除非我在較小的設備上測試它。我的比賽犯規出現在設備的人的一半告訴我使用面上觀點我想,也沒什麼用,但有誰能夠告訴我什麼,我把這個問題不同的圖形對象這樣Android遊戲編程

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ring); 
canvas.drawBitmap(bitmap, 45, 250, paint); 
canvas.drawBitmap(bitmap, 135, 250, paint); 
canvas.drawBitmap(bitmap, 225, 250, paint); 

即我使用的靜態值這是不是正確的方式或我做錯了什麼?

回答

1

獲取屏幕的高度和寬度:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int screenHeight = dm.heightPixels; 
int screenWidth = dm.widthPixels; 

然後使用這些值換算一切......你可能需要指定位圖的所有頂點,使其擴展正確。

-1

當然,它不會工作。如果您需要以多種屏幕尺寸播放遊戲,則無法假定屏幕具有特定的尺寸。

+0

那麼我該怎麼做它的任何例子 – ingsaurabh 2011-01-13 13:32:01

+0

是的,他可以:他可以認爲它是,然後縮放。問題的要點是什麼?即假設它的640x480爲一個粗糙的例子,然後查詢真實的尺寸和比例。 – RichieHH 2014-08-14 10:43:37

+0

@RichieHH:並非所有的屏幕都具有相同的寬高比。如果您只是簡單地重新調整遊戲規模,那麼您要麼將比賽拉伸到不成比例,要麼圍繞遊戲獲得黑色邊框。此外,隨着高密度視網膜顯示器的普及,一些用戶會得到太小的按鈕,而另一些用戶會得到相同的按鈕,太過大。這兩件都不是好事。您需要使用流體或響應式設計技術設計屏幕以處理多種屏幕尺寸。 [Android框架爲此提供了廣泛的支持](https://developer.android.com/training/multiscreen/index.html)。 – 2014-08-14 10:57:13

0

我想你可能必須在開始時獲取窗口的高度和寬度,並且根據手機的尺寸,你必須設置它。

1

如果您假定屏幕尺寸爲320x480,那麼您應該在清單中設置<supports-screens android:anyDensity="false">。它默認爲true ...將其設置爲false表示Android將負責將圖形輸出縮放到實際屏幕。

當然,這種自動降尺寸看起來不太完美......理想情況下,您不應該假定屏幕尺寸。

+0

如果這是錯誤的方式,我想支持所有屏幕尺寸什麼是最佳做法這樣做 – ingsaurabh 2011-01-13 13:31:23