This works but the value I get is multiplied times the screen density factor
(1.5 for hdpi, 2.0 for xhdpi, etc).
Eu acho que é bom obter o valor conforme a resolução, mas se você não quiser fazer isso, dê isso em px .......
Pixel independente da densidade (dp)
Uma unidade virtual de pixels que você deve usar ao definir o layout da interface do usuário para expressar dimensões ou posição do layout de maneira independente da densidade. O pixel independente da densidade é equivalente a um pixel físico em uma tela de 160 dpi, que é a densidade da linha de base assumida pelo sistema para uma tela de densidade "média". No tempo de execução, o sistema lida com qualquer escalonamento transparente das unidades dp, conforme necessário. 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.
Você sempre deve usar unidades dp ao definir a interface do usuário do aplicativo, para garantir a exibição adequada da interface do usuário em telas com densidades diferentes.
Eu acho que é bom alterar o valor conforme a resolução, mas se você não quiser fazer isso, dê isso em px .......
consulte este link
de acordo com isso
dp
Pixels independentes da densidade - Uma unidade abstrata que se baseia na densidade física da tela. Essas unidades são relativas a uma tela de 160 dpi (pontos por polegada), na qual 1dp é aproximadamente igual a 1px. 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.
A proporção de dp para pixel mudará com a densidade da tela, mas não necessariamente na proporção direta. O uso de unidades de DP (em vez de unidades de px) é uma solução simples para fazer com que as dimensões da vista em seu layout sejam redimensionadas corretamente para diferentes densidades de tela. Em outras palavras, ele fornece consistência para os tamanhos reais dos elementos da interface do usuário em diferentes dispositivos.
px
Pixels - corresponde aos pixels reais na tela. Esta unidade de medida não é recomendada porque a representação real pode variar entre dispositivos; cada dispositivo pode ter um número diferente de pixels por polegada e pode ter mais ou menos pixels totais disponíveis na tela.
getDimensionPixelSize(int id)
que exatamente afirma que ele retorna em Pixel, entãogetDimension(int id)
deve retornar no dp (dependência unidades independentes), que estaria pronto para uso, por exemplo, com VistasetPadding