J'ai du mal à faire les choses correctement.Conversion de dp en pixels pour la prise en charge de plusieurs écrans
Fondamentalement, je crée un ImageView et lui applique un LayoutParameter.
LayoutParams lp = new LayoutParams(width, height);
lp.gravity = Gravity.CENTER;
Je sais que width
et height
paramètres reçoivent un nombre de pixels, donc je suis les transmettre en DP et la convertir en pixels absolus en utilisant:
public int convertToPixels(float dpSize){
final float density = getResources().getDisplayMetrics().density;
return ((int) (dpSize * density + 0.5f));
}
En ce que je sais, cela devrait faire un drawable remplir exactement la même zone dans différents écrans, non? Malheureusement, cela ne se produit pas du tout.
Y at-il un problème avec ces méthodes que j'utilise?
Ces deux émulateurs ci-dessous ont la même image et la même quantité de DP. L'émulateur de gauche a une densité de 1,0 et le bon est de 2,0. Pourquoi est-ce que ça ressemble encore à si différent? Ne pas undertand ..
Saini, jetez un oeil à mon édition .. pourquoi il ne semble pas bon même avec le même montant de DP? – AndroidDev
Mon code fonctionne-t-il pour vous? – Saini
il est sûr que le calcul est correct mais les images sont encore différentes en termes de taille – AndroidDev