标签:android
曾经在处理图片过程中遇到这样一个情况:小米大屏手机上各种友好展示,但是在三星手机上,各种横七竖八、错位现象。
当然距离单位用dp,文字单位用sp,这大家都知道!在布局文件中我们我们用了dp,现实要求我们动态改变这些值,但很多控件不支持dp。这时我们需要把dp值转换成px。
注意了:是把dp值转为px,我就在这失误了。不说了,直接上实现:
public class DisplayUtils { private static DisplayMetrics sDisplayMetrics; private static final float ROUND_DIFFERENCE = 0.5f; /** * 初始化操作 * * @param context context */ public static void init(Context context) { sDisplayMetrics = context.getResources().getDisplayMetrics(); } /** * 获取屏幕宽度 单位:像素 * * @return 屏幕宽度 */ public static int getWidthPixels() { return sDisplayMetrics.widthPixels; } /** * 获取屏幕高度 单位:像素 * * @return 屏幕高度 */ public static int getHeightPixels() { return sDisplayMetrics.heightPixels; } /** * 获取屏幕宽度 单位:像素 * * @return 屏幕宽度 */ public static float getDensity() { return sDisplayMetrics.density; } /** * dp 转 px * * @param dp dp值 * @return 转换后的像素值 */ public static int dp2px(int dp) { return (int) (dp * sDisplayMetrics.density + ROUND_DIFFERENCE); } /** * dp 转 px * * @param dp dp值 * @return 转换后的像素值 */ public static float dp2px(float dp) { return dp * sDisplayMetrics.density + ROUND_DIFFERENCE; } /** * px 转 dp * * @param px px值 * @return 转换后的dp值 */ public static int px2dp(int px) { return (int) (px / sDisplayMetrics.density + ROUND_DIFFERENCE); }这个小知识点希望能帮到你!
标签:android
原文地址:http://blog.csdn.net/u010019029/article/details/43019339