package com.baoyz.dribble.util; import android.content.Context; import android.graphics.Paint; import android.graphics.Paint.FontMetrics; import android.util.TypedValue; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import java.lang.reflect.Field; /** * DimenUtil * * @author Baoyz * */ public class DimenUtil { public static int dp2px(Context context, int px) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, px, context.getResources().getDisplayMetrics()); } public static int sp2px(Context context, int px) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, px, context.getResources().getDisplayMetrics()); } public static int getFontHeight(float fontSize) { Paint paint = new Paint(); paint.setTextSize(fontSize); FontMetrics fm = paint.getFontMetrics(); return (int) Math.ceil(fm.descent - fm.top) + 2; } public static int getStatusBarHeight(Context context) { Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } return statusBarHeight; } public static float getBaseY(Context context, MotionEvent e) { return e.getRawY() - e.getY() - getStatusBarHeight(context); } public static float getBaseX(Context context, MotionEvent e) { return e.getRawX() - e.getX(); } public static void measureView(View v) { int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); v.measure(w, h); } public static int getScreenWidth(Context context){ WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); return wm.getDefaultDisplay().getWidth(); } public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); return wm.getDefaultDisplay().getHeight(); } }