對於我的Android遊戲,我有一些撥打電話Canvas.drawText()
。Android:Canvas.drawText()在不同屏幕分辨率下的文字大小
爲了測試,我使用標準字體大小似乎工作正常。
但是,當我將分辨率提高到更高密度時,較大的圖像會自動加載,但文本現在非常小。
是否有一種簡單的方法來計算文本應該繪製在什麼尺寸或我必須手動執行此操作?
編輯:什麼是editing my post @Suragch的要點?
對於我的Android遊戲,我有一些撥打電話Canvas.drawText()
。Android:Canvas.drawText()在不同屏幕分辨率下的文字大小
爲了測試,我使用標準字體大小似乎工作正常。
但是,當我將分辨率提高到更高密度時,較大的圖像會自動加載,但文本現在非常小。
是否有一種簡單的方法來計算文本應該繪製在什麼尺寸或我必須手動執行此操作?
編輯:什麼是editing my post @Suragch的要點?
最簡單的方法是將帶有刻度無關的像素的(sp
)單元定義的資源的字體大小 - 這單位是像密度獨立像素(dp
或dip
),它考慮到了屏幕密度但它也考慮到用戶的字體大小設置。
要添加一個新的層面在res/values
文件夾中創建一個dimens.xml
文件並輸入以下代碼以添加一個新的層面名爲myFontSize
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="myFontSize">20sp</dimen>
</resources>
可以使用,然後讓你的應用程序中的文本大小
int scaledSize = getResources().getDimensionPixelSize(R.dimen.myFontSize);
生成的大小將被正確縮放以考慮當前的屏幕密度和字體大小設置。請參閱Android Developers page on More Resources。
最簡單的方法是在資源目錄中定義字體大小,單位爲scale-independent pixel (sp)
或density-independent pixel (dp)
。然後得到使用
int scaledSize = getResources().getDimensionPixelSize(R.dimen.font_size);
mTextView.setTextSize(scaledSize);
這將相應地根據當前屏幕密度/分辨率和用戶的字體大小設置縮放文字大小的文字大小。
如何在資源目錄中定義字體大小?
在文件夾res->values
中創建一個名爲dimens.xml
的文件。然後複製下面的代碼。
<resources>
<dimen name="font_size">25sp</dimen> // sp or dp accordingly
</resources>
標籤<dimen>
的name
屬性將被用作資源ID。
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension 我明白了。 – Trung 2011-06-23 07:17:13
當調用Canvas.drawText()
時,文本大小首先由在Paint
對象中傳入的值確定,可通過Paint.setTextSize()
進行設置。文字大小將根據畫布密度自動縮放Canvas
,可以使用Canvas.getDensity()
找到。
當在畫布上繪製的繪畫對象上設置文本大小時,請使用單位值dp
或sp
,並讓Canvas處理縮放。
你需要計算吸引你的文字一樣的大小,任何畫布大小的關係,所以用實際的畫布大小,像這樣:
你可以用一個簡單的數學運算自己做
double relation = Math.sqrt(canvas.getWidth() * canvas.getHeight());
但這個數字僅僅是太大,所以由一個適合您的需要將其劃分,可以說250:
relation = relation/250;
現在,您可以設置文字大小是這樣的:
paint.setTextSize((float) (myFontSize * relation));
您不必通過任何必要的鴻溝關係,但在這種情況下,你將不得不使用非常小的字體大小可變myFontSize
。對於我來說,250個作品可以很好地使用常規字體大小,可以適應任何屏幕大小,因爲您已經在計算畫布中的像素尺寸。
嘗試使用[scaledDensity](http://developer.android.com/reference/android/util/DisplayMetrics.html#scaledDensity)? – 2011-03-20 12:10:02
嗨Marcin,是的,我已經使用過,乘數似乎沒有太大的作用。據我所知,我也正在使用正確的乘法邏輯。 – twig 2011-03-21 23:32:04