2017-03-08 72 views
1

有轉換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); 
} 

那麼,有什麼問題的第一種方法?對我來說,它在我的所有應用程序中都能正常工作,但我想知道是否有某些情況可能會失敗?

回答

2

是有一些情況下它可能會失敗?

是的,有!

Android支持不同的屏幕,例如,你可能會通過其他方式投的應用與Chromecast或連接到不同的屏幕。在這種情況下,值將不會正確轉換爲其他屏幕。

documentationResources.getSystem()

返回全局共享資源對象,它提供只訪問 系統資源(沒有應用程序資源),和未配置 當前屏幕(不能使用尺寸單位,不會根據方向 更改等)。

+0

感謝。在我的情況下,應用程序沒有「投射」選項,但它可能會在奇怪的設備上失敗[如這個](https://www.asus.com/us/Phone/ASUS_PadFone_X_US/)。 –