Android 如何获得屏幕倾斜时的大小

Android 如何获得屏幕倾斜时的大小,android,screen,Android,Screen,我搜索了这个问题,几乎所有的答案都是这样的: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; 但是官方文件说,widthPixels是显示器的绝对宽度,以像素为单位。我在Nexus 5上运行上面的代码,宽度等于1080。显然,这是一个像素值。有什么我错过的吗?如何获得屏幕的倾斜值?您应该将结果转

我搜索了这个问题,几乎所有的答案都是这样的:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;

但是官方文件说,
widthPixels
是显示器的绝对宽度,以像素为单位。我在Nexus 5上运行上面的代码,宽度等于1080。显然,这是一个像素值。有什么我错过的吗?如何获得屏幕的倾斜值?

您应该将结果转换为倾斜,如:

private int pixelsToDips(int pixels)
{
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (pixels / scale + 0.5f);
}

我不认为你可以,DIP与密度无关,不能用真实世界的单位来衡量。我不太确定它是否正确,因此只有一个评论。。dip=如上所述的dp。此外,您可以从dp获得px,反之亦然。因此,我假设你可以把你得到的和第二个链接的答案结合起来。@MalaKa我按照你说的做了,我使用
float width\u dp=dm.widthPixels/dm.density谢谢!
0.5f
的含义是什么?我放了一个带有
像素/比例
宽度大小的按钮,它的边缘确实有一个薄薄的空白。当我使用
像素/比例+0.5f
时,正如你所说,它完全适合我的屏幕。但是为什么需要添加
0.5f
?它适用于所有屏幕大小吗?我测试
匹配父项
,在Android Studio中,稀疏的空缺再次消失。因此我想没有必要添加
0.5f
如果将
4.6f
转换为int,则int的值将为4。但是如果在施法之前添加
0.5f
,int值将为5。这意味着
intx=(int)(4.6f+0.5f)
intx=Math.round(4.6f)
相同。