Android中的Px到Dp转换

时间:2013-06-29 16:21:49

标签: android android-layout

我遇到的情况是我需要以编程方式将TextView的宽度设置为50。 我需要将此50转换为dp,因为我没有找到任何以编程方式将宽度设置为dp的规定。任何人都可以帮助我如何在Android中将像素转换为dps。


在此先感谢。

1 个答案:

答案 0 :(得分:2)

以下是我很久以前写过的一些实用方法,它们似乎经常派上用场:

/**
 * Converts pixel to dip.
 * 
 * @param pixel
 *            that should be converted.
 * @return the converted rounded dip.
 */
private int pixelToDip(int pixel) {
    DisplayMetrics displayMetrics = mContext.getResources()
            .getDisplayMetrics();
    return (int) ((pixel / displayMetrics.density) + 0.5);
}

/**
 * Converts dip to pixel.
 * 
 * @param dip
 *            that should be converted.
 * @return the converted rounded pixel.
 */
private int dipToPixel(int dip) {
    DisplayMetrics displayMetrics = mContext.getResources()
            .getDisplayMetrics();
    return (int) ((dip * displayMetrics.density) + 0.5);
}

你要么必须在Context的子类中运行它,要么从某个地方获取Context。我在我的Utility类构造函数中传入一个Context,并将其存储在mContext