2011-06-16 17 views
16

獲得DisplayMetrics的正確方法是什麼,即獲取屏幕/顯示信息,如densityxdpi獲取DisplayMetrics的正確方法:getResources()或getWindowManager()

我問,因爲我已經看到了要對這個方法有兩種:

FIRST:

DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

然後讓通過metrics.densitymetrics.xdpi的信息等

第二:

getResources().getDisplayMetrics().density 

這個方法我相信你可以als Ø只是初始化變量來保存DisplayMetric再抓信息像第一種方法:

DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics() 

,然後你可以像正常的信息:metricsMethodTwo.densitymetricsMethodTwo.xdpi

我都在不同的地方看到在文檔中。那麼,如果有什麼區別,什麼時候有一種方法比另一種方法更受歡迎(或更合適),爲什麼?感謝

回答

16
public DisplayMetrics getDisplayMetrics() 

返回當前顯示量度是在該資源對象效果。返回的對象應被視爲只讀。

public void getMetrics (DisplayMetrics outMetrics) 

初始化DisplayMetrics對象從該顯示的數據

不同的是,由Resources方法返回的度量是特定對象Resources的指標。您可以隨時與構造

Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) 

中,你可以設置你想要的任何指標,不一定是你可以從方法getDefaultDisplay()返回的Display情況下獲得的指標創建一個新的Resources實例。

這就是區別。如果您僅使用默認資源和默認顯示,則可能無法改變這些值。

+3

謝謝!儘管如此,我仍然試圖想象你何時會創建自己的「資源」。當你做這個或者爲什麼時,有沒有一個例子? (即兩個方法的值實際上會不同?) – 2011-06-22 04:23:20

相關問題