This works but the value I get is multiplied times the screen density factor
(1.5 for hdpi, 2.0 for xhdpi, etc).
Я думаю, що добре отримати значення відповідно до роздільної здатності, але якщо ви не хочете цього робити, надайте це в px .......
Незалежний від щільності піксель (dp)
Віртуальний піксельний блок, який слід використовувати під час визначення макета інтерфейсу, щоб виразити розміри макета або положення незалежно від щільності. Незалежний від щільності піксель еквівалентний одному фізичному пікселю на екрані 160 dpi, що є базовою щільністю, прийнятою системою для екрана "середньої" щільності. Під час виконання система прозоро обробляє будь-яке масштабування блоків dp, якщо це необхідно,based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels.
Ви завжди повинні використовувати одиниці dp при визначенні інтерфейсу програми, щоб забезпечити належне відображення вашого інтерфейсу на екранах з різною щільністю.
Я думаю, що добре змінити значення відповідно до роздільної здатності, але якщо ви не хочете цього робити, надайте це в px .......
перейдіть за цим посиланням
відповідно до цього
д.п.
Пікселі, незалежні від щільності, - абстрактна одиниця, заснована на фізичній щільності екрану. Ці одиниці відносяться до екрана 160 dpi (крапки на дюйм), на якому 1dp приблизно дорівнює 1 px. When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down.
Співвідношення dp до пікселя змінюватиметься із щільністю екрана, але не обов'язково в прямому співвідношенні. Використання одиниць dp (замість одиниць px) - це просте рішення, щоб зробити розміри подання у вашому макеті належним чином змінити розмір екрана. Іншими словами, вона забезпечує узгодженість розмірів елементів інтерфейсу користувача в реальному світі на різних пристроях.
px
Пікселі - відповідає фактичним пікселям на екрані. Ця одиниця вимірювання не рекомендується, оскільки фактичне представлення може змінюватись у різних пристроях; кожен пристрій може мати різну кількість пікселів на дюйм і може мати більше або менше загальних пікселів на екрані.
getDimensionPixelSize(int id)
який точно вказує, що він повертається в Pixel, томуgetDimension(int id)
повинен повернутися в dp (незалежні від одиниці залежності), які були б готові до використання, наприклад, з ViewsetPadding