getheight()px或dpi?

问题描述 投票:13回答:4

帮助。我找到了ListView的高度,我不知道px或dpi吗?我需要dpi

final ListView actualListView = mPullRefreshListView.getRefreshableView();

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

                    }
                });
android dpi
4个回答
33
投票

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;
}

或者如果您想在下面使用px,请使用。

将dp转换为像素:

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

1
投票

它返回像素。http://developer.android.com/reference/android/view/View.html#getHeight()要将像素转换为dpi,请使用以下公式px = dp *(dpi / 160)


1
投票

使用此代码,您可以获得运行时显示器的宽度和高度

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;

0
投票

[将dp转换为px并将px转换为dp的功能应如下所示(在Kotlin中:]

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()
  }
© www.soinside.com 2019 - 2024. All rights reserved.