getheight()px还是dpi?

时间:2012-08-08 10:17:28

标签: android dpi

Help.I发现了ListView的高度,我不知道px或dpi?我需要dpi

final ListView actualListView = mPullRefreshListView.getRefreshableView();

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

                    }
                });

4 个答案:

答案 0 :(得分:29)

getheight返回高度(以像素为单位),以下是文档说的内容..

  public final int getHeight ()
  
    

自:API Level 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 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

将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()
}