Использует ли setWidth (int pixels) dip или px?
использует ли setWidth (int pixels) независимый от устройства пиксель или физический пиксель в качестве единицы измерения? Например, setWidth (100) устанавливает ширину представления a в 100 провалов или 100 pxs?
спасибо.
5 ответов:
Он использует пиксели, но я уверен, что вам интересно, как использовать провалы вместо этого. Ответ находится в
TypedValue.applyDimension()
. Вот пример того, как преобразовать провалы в px в коде:// Converts 14 dip into its equivalent px Resources r = getResources(); int px = Math.round(TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
правильный способ получить постоянное число провалов в коде-это создать XML-файл ресурсов, содержащий значения dp, такие как:
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="image_width">100dp</dimen> <dimen name="image_height">75dp</dimen> </resources>
затем обратитесь к ресурсу в коде следующим образом:
float width = getResources().getDimension(R.dimen.image_width)); float height = getResources().getDimension(R.dimen.image_height));
float, который вы вернули, будет масштабироваться соответственно плотности пикселей устройства, и поэтому вам не нужно продолжать реплицировать метод преобразования во всем вашем приложении.
метод setWidth(100), установите 100 px в качестве ширины (не в dp).таким образом, вы можете столкнуться с различными проблемами ширины на разных android phones.So используйте измерение в dp вместо пикселей.Используйте приведенный ниже код, чтобы получить измерение в dp ширины образца=300px и высоты=400px.
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics()); int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());