2014-12-07 2 views
2

Я пытаюсь установить ширину заготовки для представления. «In», «mm» и «pt» независимы от плотности и одинакового размера на каждом устройстве, или я ошибаюсь? Моя ширина вид должен быть 141.3pt/49.8mm, поэтому я ставлю в XML андроида: layout_width = «141.3pt» или с помощью кода:Установка фиксированной ширины размера изображения с pt/mm/in ANDROID

float requiredPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, (float) 141.3, dm); 
ViewGroup.LayoutParams params = mRequiredSizeLine.getLayoutParams(); 
     params.width = (int)requiredPx; 
     mRequiredSizeLine.setLayoutParams(params); 

Дело в том, что это нормально, на некоторых устройствах (на большинстве из них), но, например, на Samsung Galaxy Stratosphere 2 это не нормально. Также я есть метод, который расчета экрана ширины дисплея в в и мм

private double checkDeviceWidthInInches(){ 
    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    double x = Math.pow(dm.widthPixels/dm.xdpi,2); 
    double y = Math.pow(dm.heightPixels/dm.ydpi,2); 

    return Math.sqrt(x); 

и вы можете заметить с первого изображения ниже, это тоже неправильно (это не возможно ширина экрана, чтобы быть 76 мм).

Image of Samsung Galaxy Stratosphere 2 (ЭТО НЕПРАВИЛЬНО) и Image of Samsung Galaxy S4 (ЭТО ПРАВИЛЬНО)

Так что же вы думаете? Может быть какая-то проблема с устройством или? Ссылка для спецификации прибора http://www.samsung.com/us/mobile/cell-phones/SCH-I415SAAVZW

Любое предложение? Спасибо

ответ

0

Вы всегда должны указывать размеры ваших представлений в dp (не зависящие от плотности пиксели). Избегайте использования других устройств. Если вы хотите указать размер текста, используйте sp. Difference between px, dp, dip and sp in Android

+0

Это не решение. Повторите мой вопрос, я внес некоторые изменения. – nikolaDev

+0

Какова причина, по которой вы действительно хотите использовать pt/mm/in? –

+0

Ну, из ссылки, которую вы предоставили, говорится, что pt/in/mm - единицы измерения, которые имеют одинаковый физический размер на каждом экране, и это то, чего я хочу достичь. Ширина должна быть FIX на каждом устройстве. Но, как вы можете видеть, странная вещь на этом устройстве заключается в том, что метод возвращает неправильный размер физической ширины, поэтому мне интересно, является ли устройство проблемой? – nikolaDev

Смежные вопросы