2015-07-21 1 views

ответ

0

Отношение dp/px зависит от плотности экрана устройства.

Я бы рекомендовал вам ознакомиться с документами Android по этому вопросу.

http://developer.android.com/guide/practices/screens_support.html

Каждая классификация плотности экрана имеет определенный пикс множитель, связанный с ним т.е. MDPI = рх * 1 и ИПЧР = рх * 1,5

Вот хороший маленький калькулятор, чтобы помочь вам разобраться это:

http://labs.rampinteractive.co.uk/android_dp_px_calculator/

+0

я читал, эти статьи, но не смог преобразовать эти значения в коде андроида. поэтому задал вопрос об этом. –

+0

Я смущен, что это точно, что вы не понимаете? У меня есть ощущение, что это плотность экранов (более высокая плотность = больше пикселей), поэтому нет прямого преобразования, это зависит от плотности экрана –

0

Предполагая, что вы определили ваши размеры вид в дп (так же, как провал), вы можете использовать получить экземпляр DisplayMetrics для преобразования дп к фактическому PIXE ls для вашего текущего устройства.

Удобная функция, которую вы можете добавить в служебный класс для занятий преобразования:

private static float dipToPixels(Context context, int dip) 
{ 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, metrics); 
} 
+0

. Я говорю о размере пользовательского вида здесь, контекст не существует для пользовательские представления, поэтому DisplayMetrics бесполезен! –

+0

1. В пользовательском представлении вы имеете в виду некоторый класс, который расширяет android.view.View? 2. Вы пытаетесь вычислить правильные значения в Runtime или создавать жестко заданные значения, которые вы подключаете к файлам макета xml на основе размера экрана? –