2012-04-13 206 views
0

我知道這裏有很多關於這個話題的信息,但我仍然有點困惑。我製作了一個適用於Android應用程序的類視圖,該圖片適用於位圖和文本。查看多屏幕支持

我這樣定義的文本位置:

canvas.drawText("SCORE: " + score, (canvas.getWidth() - 150), 
        (canvas.getHeight() - 20), paintScore); 

每例子,但我知道這是不是最好的做這件事的方式,因爲它看起來就像我想我的手機上,但在一個與一個更小或更大的屏幕看起來很糟糕,或者只是在屏幕之外。

我應該怎麼做?

回答

0

更好地選擇你的寬度的東西相對位置畫布的大小 - 所以找出你想要的文字到b您的手機上 - 例如,如果你想讓它開始在中心:

int x = canvas.getWidth()/2 

如果這些相對類型度量不能很好地工作,作爲最後的手段,android會指定一種特殊類型的資源(@dimen),您可以在各種值文件夾中定義(例如values-small/dimen.xmlvalues-xlarge/dimen.xml)和硬代碼整數值在那裏。 (如圖所示在docs),然後檢索您可以像任何其他資源:

getResources().getDimensionPixelOffset(R.dimen.score_margin) 
+0

我儘可能地使用諸如「canvas.getWidht/2」之類的東西,但在某些情況下它不起作用好吧......我認爲你的第二個提法有點複雜,但我仍然會嘗試。謝謝。 – Kevin04PT 2012-04-13 17:50:42

+0

我試圖使用@dimen資源,它工作得很好。謝謝你的提示。 ;) – Kevin04PT 2012-04-15 11:37:29

0

你有很多的解決方案:

這裏:

1)與密度無關的像素(DIP)工作是一種方法,從PX轉換沾:

public static int pxToDip(Activity activity, int size){ 

    Resources r = activity.getResources(); 
    int dipSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, r.getDisplayMetrics()); 

    return dipSize; 

} 

2)個工作:

獲取屏幕大小,將其與您想要的文本大小進行比較並以百分比形式添加您的保證金

+0

哼,謝謝,要試試這個。我也開放給其他消費者,因爲對於遊戲開發來說,獲取圖形很重要。 :/ – Kevin04PT 2012-04-13 17:48:13