转换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或连接到不同的屏幕。在这种情况下,值将不会正确转换为其他屏幕。

documentationResources.getSystem()

返回全局共享资源对象,它提供只访问 系统资源(没有应用程序资源),和未配置 当前屏幕(不能使用尺寸单位,不会根据方向 更改等)。

+0

感谢。在我的情况下,应用程序没有“投射”选项,但它可能会在奇怪的设备上失败[如这个](https://www.asus.com/us/Phone/ASUS_PadFone_X_US/)。 –