Android getheight()px还是dpi?

Android getheight()px还是dpi?,android,dpi,Android,Dpi,帮助。我找到了ListView的高度,但我不知道px或dpi?我需要新闻部 final ListView actualListView = mPullRefreshListView.getRefreshableView(); actualListView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() {

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

final ListView actualListView = mPullRefreshListView.getRefreshableView();

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

                    }
                });
它返回像素。 要将像素转换为dpi,请使用以下公式px=dp*(dpi/160)

getheight返回像素高度,下面是docs的说明

  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;
}
public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));       
    return px;
}
或者,如果您想在px中使用它,请在下面使用

将dp转换为像素:

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

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

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

将dp转换为px和px转换为dp的功能应如下所示(以kotlin为单位):


getHeight();始终以像素为单位返回高度,请检查此解决方案。只是未来的旁注。您需要的可能是
dp
dip
——它们代表与密度无关的像素
dpi
是每英寸点数,它测量屏幕的密度,而不是尺寸。请告诉我458 px高度的分辨率(以dpi为单位)好吗?如果在
片段中使用,
getContext()
可以产生
NullPointerException
,而应该在
onCreateView()中获取上下文,像这样
Context-Context=view.getContext()它是否仅适用于“xdpi”?例如,如果在mdpi设备中执行相同的代码,会发生什么?