Wydaje mnie oczywiste, że robisz swoje badania na urządzeniu MDPI lub emulatorze.
Na wyświetlaczach mdpi, 1px = 1dp.
Po prostu przetestuj metody na ekranie o innej gęstości: o innej gęstości:.
Zauważ, że
public float getDimension (int id)
Retrieve a dimensional for a particular resource ID.
Unit conversions are based on the current DisplayMetrics associated with the resources.
Parameters
id The desired resource identifier, as generated by the aapt tool.
This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier.
Returns
Resource dimension value multiplied by the appropriate metric.
Tak więc, jeśli urządzenie jest ustawiane w pikselach w układzie xml, dostaniesz surowy px (nieprzetworzony).
W przeciwnym razie, jeśli prawidłowo ustawisz jednostkę w dp w układzie xml, otrzymasz poprawną konwersję do px.
Być może gęstość ekranu urządzenia to mdpi? Wtedy będą takie same. –
To bardzo dobre pytanie. Też się nad tym zastanawiałem. Dokumentacja [getDimension] (http://developer.android.com/reference/android/content/res/Resources.html#getDimension%28int%29) jest w rzeczywistości nieoptymalna, ponieważ sformułowanie i nazewnictwo są niejasne i nie jest jasne, która jednostka jest rzeczywiście wyjściem. Dzięki za to pytanie. – Trilarion