getDimension () / getDimensionPixelSize () - problème de mutliplier

J'ai donc android 2.3.5 de l'appareil, ce qui est NORMAL/HDPI. J'ai un dimens.xml dans mon projet:

...
    <dimen name="gameresult_congrats_label_msg_textSize">20sp</dimen>
...

ce fichier est absolument identique dans les valeurs normales/valeurs-hdpi et donc sur les dossiers.
Dans ma première activité de l'application m'indique que la valeur à l'aide de:

Toast.makeText(this, "textSize is "+getResources().getDimensionPixelSize(R.dimen.gameresult_congrats_label_msg_textSize), Toast.LENGTH_SHORT).show();

et il affiche 30. J'ai Essayé aussi:

Toast.makeText(this, "textSize is "+getResources().getDimension(R.dimen.gameresult_congrats_label_msg_textSize), Toast.LENGTH_SHORT).show();

mais le résultat est le même. Mais seulement quand j'ai essayé ceci:

Toast.makeText(this, "textSize is "+getResources().getString(R.dimen.gameresult_congrats_label_msg_textSize), Toast.LENGTH_SHORT).show();

J'ai obtenu mon "20sp" enfin!!! Mais pourquoi est-ce? Officiel docs dit que ces méthodes retourne

Dimension ressources valeur multipliée par la mesure appropriée.

J'ai vérifié en changeant ma valeur de 25 ans et j'ai 38 qui signifie aos utilise 1,5 multiplicateur. Mais pourquoi? Il fait déjà de la valeur de dossier approprié, ce qui signifie qu'il obtient un prêt à la valeur d'usage! D'où l'am obtient 1,5 x multiplicateur? Je sais que cela dépend de DisplayMetrics. Mais comment il calcule 1,5 x?
Mise à JOUR
Je comprends que sur le multiplicateur mais, voyez-vous, le vrai problème ici est environ le double de la mise à l'échelle. Et c'est pourquoi j'ai posé cette question.
Donc, si j'ai quelques layout.xml (dans res\mise en page du dossier) avec TexView défini comme:

<TextView
    android:id="@+id/congratsLabel"
    ...
    android:textSize="@dimen/gameresult_congrats_label_msg_textSize" />

Tout semble ok. Je veux dire textview est comme Im attend.
Maintenant permet de faire la même chose dans le code:

TextView congratsLabel = fineViewById(R.id.congratsLabel); 
textSize = getResources().getDimension(R.dimen.gameresult_congrats_label_msg_textSize)
congratsLabel.setTextSize(textSize) 

et là est la question!!! getResources().getDimension() renvoie un ÉCHELLE valeur et c'est ok. Mais la taille de mon textView sera de 1,5 plus que ce que j'attend cuz setTextSize fonctionne avec SP et voici la deuxième échelle! Et c'est pourquoi l'AM fait résultant de texte de taille adapté à 45 (initialement définie comme 20sp).

source d'informationauteur Stan