2010-08-26 5 views
4

Я использую следующий код:android Imageview layoutparams in dip?

ImageView я = новый ImageView (mContext);

i.setImageResource (mImageIds [position]);

i.setScaleType (ImageView.ScaleType.FIT_XY);

 //pixels settings !!! 

i.setLayoutParams (новые Gallery.LayoutParams (200, 100));

но, как вы можете видеть, он устанавливает размеры макета в пикселях.

Кто-нибудь знает, как сделать то же самое, но в "dip"?

ответ

1

http://developer.android.com/guide/practices/screens_support.html#screen-independence См

О том, как конвертировать из точек на дюйм в пикселях.

+0

спасибо, мой взгляд интересен для меня, но я не понимаю формулу ... Вы понимаете? можете ли вы привести пример того, как преобразовать 100dip в пиксель, например? – Fabien

+0

Я нашел это решение, которое отлично работает: http://stackoverflow.com/questions/2238883/what-is-the-correct-way-to-specify-dimensions-in-dip-from-java-code – Fabien

19

Следующий вспомогательный метод принимает в качестве независимых элементов входного устройства (DIP) и возвращает фактические пиксели для текущего устройства.

private int getPixels(int dipValue) { 
    Resources r = getResources(); 
    int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
              dipValue, 
              r.getDisplayMetrics()); 
    return px; 
} 
10

Если вы храните измерение в качестве ресурса, вы можете использовать

getResources().getDimensionPixelSize(id); 

Это также облегчит для настройки макетов.

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

  • Нет связанных вопросов^_^