2012-07-02 122 views
1

我在android上做2D遊戲,一切正常。問題在於我的手機(Xperia)上的角色移動速度非常快,但是他的手機屏幕更寬,運行速度非常慢。我嘗試獲取屏幕寬度併除以100,並將其設置爲步驟,以便角色根據寬度有一個步驟 - 沒有工作。 有什麼方法可以獲得某種縮放像素或某種東西。感謝幫助:)Java縮放像素?

這裏是我做到這一點誰:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
height = displaymetrics.heightPixels; 
width = displaymetrics.widthPixels; 

想法?

回答

0

將您的步長乘以displaymetrics.density。這有效地將「px」值轉換爲「dp」值,即它應該在所有設備上具有相同的物理寬度。

+0

好奇地知道這是如何完美的工作。根據dp,屏幕的高度和寬度是否不同?比方說,在一個小屏幕上橫跨寬度,它會花費一定的時間* x *。在大屏幕上,即使使用dp也需要更多時間,因爲在小屏幕和大屏幕上dp的寬度不一樣。對不對?或者我錯過了什麼。謝謝。 – capcom

+1

無論您的屏幕有多大,物理距離都是一樣的。如果你的精靈是1平方釐米,每秒移動1釐米,它會在所有設備上這樣做。你可以完全忽略像素。儘管(或更大的觀點),它將在更大的設備上擁有更大的競爭環境。 –

+0

那麼你將如何保持一個不變的大小的比賽場地?這甚至可能與大量的屏幕尺寸和密度,而不改變遊戲,以適應每種不同的類型? – capcom

1

這對我有用。

int height = Resources.getSystem().getDisplayMetrics().heightPixels; 
int width = Resources.getSystem().getDisplayMetrics().widthPixels;