getDimension () / getDimensionPixelSize () - проблема с множителем

Таким образом, у меня есть устройство Android 2.3.5, которое является нормальным / HDPI. У меня есть измерение. Xml в моем проекте:

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

этот файл абсолютно идентичен в папках values-normal / values-hdpi и так далее. В моем первом приложении активность показывает мне это значение, используя:

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

и это показывает 30. Я пробовал также:

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

но результат тот же. Но только когда я попробовал это:

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

Я получил свой "20sp" наконец-то! Но почему это?Официальные документы говорят, что эти методы возвращается

Значение измерения ресурса, умноженное на соответствующую метрику.

Я проверил это, изменив свое значение на 25 и получил 38, что означает, что aos использует множитель 1,5. Но почему? Он уже получает значение из соответствующей папки, что означает, что он получает готовое значение! Откуда AOS получает этот 1,5-кратный множитель? Я знаю, что это зависит от DisplayMetrics. Но как он рассчитывает 1,5x?
ОБНОВИТЬ
Я понимаю о множителе, но, видите ли, настоящая проблема здесь в двойном масштабировании. И именно поэтому я задал этот вопрос.
Так что если у меня есть файл layout.xml (в папке res \ layout) с определением TexView, например:

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

Все выглядит хорошо. Я имею в виду textview, как я ожидаю.
Теперь давайте сделаем то же самое в коде:

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

и вот проблема !!! getResources (). getDimension () возвращаетмасштабируется ценность и вот ок. Но итоговый размер моего textView будет на 1,5 больше, чем я ожидал, потому что setTextSize работает с SP, и вот вторая шкала! И именно поэтому AOS делает результирующий размер текста, масштабируемый до 45 (первоначально определяемый как 20sp).

Ответы на вопрос(5)

Ваш ответ на вопрос