getheight () px или dpi?

Помогите. Я нашел высоту ListView и не знаю пикселей или точек на дюйм? Мне нужно dpi

final ListView actualListView = mPullRefreshListView.getRefreshableView();

actualListView.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    public void onGlobalLayout() {
                        height = actualListView.getHeight();  

                    }
                });

person Max Usanin    schedule 08.08.2012    source источник
comment
getHeight (); всегда возвращайте высоту в пикселях, проверьте это решение для вас. stackoverflow.com/questions/3166501 /   -  person Adeel Pervaiz    schedule 08.08.2012
comment
Просто замечание на будущее. Вам, вероятно, понадобится dp или dip - они означают независимые от плотности пиксели. dpi составляет точек на дюйм и измеряет плотность экрана, а не его размеры.   -  person Marcin Koziński    schedule 08.08.2012


Ответы (4)


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

  public final int getHeight ()

Начиная с: API уровня 1

Верните высоту вашего обзора. Возврат

Высота вашего обзора в пикселях.

Вам нужно преобразовать px в dp, используйте способы ниже, чтобы преобразовать его в dp.

Преобразовать пиксель в dp:

public int pxToDp(int px) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
    return dp;
}

или, если вы хотите, чтобы это было в пикселях, используйте ниже.

Преобразование dp в пиксель:

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));       
    return px;
}
person AAnkit    schedule 08.08.2012
comment
Если используется в Fragment, getContext() может создавать NullPointerException, вместо этого вы должны получить контекст в onCreateView(), например, Context context = view.getContext(); - person deyanm; 22.07.2018
comment
Только для xdpi работает? Что произойдет, если этот же код будет выполнен, например, на устройстве mdpi? - person Pablo Alfonso; 17.04.2020

Возвращает пиксели. http://developer.android.com/reference/android/view/View.html#getHeight() Для преобразования пикселей в dpi используйте эту формулу px = dp * (dpi / 160)

person barisemreefe    schedule 08.08.2012

Используя этот код, вы можете получить ширину и высоту дисплея во время выполнения

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
person Parag Chauhan    schedule 08.08.2012
comment
Подскажите, пожалуйста, разрешение (в dpi) для высоты 458 пикселей? - person Max Usanin; 08.08.2012

Функции преобразования dp в px и px в dp должны выглядеть, как показано ниже (в котлине):

fun convertDpToPx(dp: Int): Int {
    val metrics = Resources.getSystem().displayMetrics
    return dp * (metrics.densityDpi / 160f).roundToInt()
  }

fun convertPxToDp(px: Int): Int {
  val metrics = Resources.getSystem().displayMetrics
  return (px / (metrics.densityDpi / 160f)).roundToInt()
}
person mmBs    schedule 20.05.2020