2013-05-28 31 views
6

我有一個非常簡單的問題:如何獲得給定資源的限定符(使用時)?

從R.java文件給出一個特定的資源(id,string,drawable,...),是否有可能知道它的文件夾上有哪些限定符匹配它?如果是這樣,怎麼樣?

例如,如果我的設備有一個hdpi密度的屏幕,並且我在「res/drawable-hdpi」和「res/drawable-mdpi」上有相同的文件名「x.png」,爲了解碼這個文件,我想得到的是它從res/drawable-hdpi獲得了文件,並且知道它具有hdpi密度。

當然,在這個例子中,如果文件存在於其他文件夾中,但不在hdpi文件夾中,我希望它告訴我在解碼文件時將使用哪一個文件。

其餘的限定符(locale,screenSize,...)也是如此。

+0

我很感興趣這個問題。我遇到了同樣的問題。你解決了嗎?你是否發現過在任何情況下猜測設備使用的質量的功能? – GmloMalo

+0

@GmloMalo不,我甚至不記得我爲什麼要這樣... –

+0

好的。無論如何感謝 – GmloMalo

回答

0

如果您針對大量設備進行定位,所以我決定創建自己的簡單應用程序以找出正在使用哪種繪圖工具,則會出現此問題。 Here是鏈接。

希望這會有所幫助。

+0

示例代碼沒有代碼,沒有功能,做我寫的有關... –

+0

只是運行示例代碼,你會明白。 – bladeX

0

我不認爲android框架提供了一個機制來回應您的應用程序找出哪些資源被使用。

但是,您總是可以根據android資源限定符文檔中指定的規則制定規則。

但是我不清楚你的要求是什麼?你想讓你的應用程序能夠識別使用哪個資源?或者你只在設計/構建過程中需要這個。

至於計算出哪些資源正在使用,您可以根據屏幕密度,屏幕大小,當前手機區域設置和當前方向輕鬆制定邏輯,所有這些都可以通過android中的各種apis獲得。

+0

假設代碼不知道哪些資源文件存在,我想要的是有一個函數,將告訴哪些限定符用於給定的資源。它的運行時間(因爲否則我可以看到自己的文件在哪裏...)。 –

+0

在我看來,這是不可能的...你可以做的最好的事情是你知道哪些資源你已經放在每個文件夾與您提供的限定符。根據我提到的設備指標,您可以猜測您的應用正在挑選哪些資源。我不認爲你可以找出某個特定資源的限定符,這是由android系統完成的,而不是你的應用程序。 –

0

使用http://developer.android.com/reference/android/content/res/Configuration.html

例如對於DPI:

Configuration config = getResources().getConfiguration(); 
    Log.d("DPI ", Integer.toString(config.densityDpi)); 
+0

我給你的部分資源ID在哪裏?目前,我看到的只是您已經確定了設備的密度。它與給定資源無關。 –

+0

這個,你可以查看數字的dpi。 http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-in-android檢查dpi與配置和已知的密度桶爲您的手機。 – Novikov

+0

你不明白這個問題。我不要求密度。我問如何獲得我選擇的資源的原始文件夾。例如,如果我在多個文件夾(「drawable-ldpi」,「drawable-port」,「drawable-iw」,...)中有一個可繪製的對象,我想要找到它在我嘗試獲取時選擇哪個文件它。 –