转换DP没有上下文,以PX
问题描述:
有转换DP没有上下文到PX的非常简洁的方式,它是这样的:转换DP没有上下文,以PX
public static int dpToPx(int dp) {
float density = Resources.getSystem().getDisplayMetrics().density;
return Math.round((float) dp * density);
}
在每一个谷歌的例子在Google GitHub page他们使用以下方法:
public static int convertDpToPixel(Context ctx, int dp) {
float density = ctx.getResources().getDisplayMetrics().density;
return Math.round((float) dp * density);
}
那么,有什么问题的第一种方法?对我来说,它在我的所有应用程序中都能正常工作,但我想知道是否有某些情况可能会失败?
答
是有一些情况下它可能会失败?
是的,有!
Android支持不同的屏幕,例如,你可能会通过其他方式投的应用与Chromecast或连接到不同的屏幕。在这种情况下,值将不会正确转换为其他屏幕。
从documentation为Resources.getSystem()
:
返回全局共享资源对象,它提供只访问 系统资源(没有应用程序资源),和未配置 当前屏幕(不能使用尺寸单位,不会根据方向 更改等)。
感谢。在我的情况下,应用程序没有“投射”选项,但它可能会在奇怪的设备上失败[如这个](https://www.asus.com/us/Phone/ASUS_PadFone_X_US/)。 –