package com.mogujie.tools; import java.lang.reflect.Field; import android.content.Context; /** * 获取屏幕,分辨率相关 * @author 6a209 * * 2011-12-14 下午10:28:41 */ public class ScreenTools { private Context mCtx; private static ScreenTools mScreenTools; public static ScreenTools instance(Context ctx){ if(null == mScreenTools){ mScreenTools = new ScreenTools(ctx); } return mScreenTools; } private ScreenTools(Context ctx){ mCtx = ctx.getApplicationContext(); } public int getScreenWidth(){ return mCtx.getResources().getDisplayMetrics().widthPixels; } public int dip2px(int dip){ float density = getDensity(mCtx); return (int)(dip * density + 0.5); } public int px2dip(int px){ float density = getDensity(mCtx); return (int)((px - 0.5) / density); } private float getDensity(Context ctx){ return ctx.getResources().getDisplayMetrics().density; } /** * 540 的分辨率上是85 ( * @param width 当前屏幕宽度 * @return */ public int getScal(){ return (int)(getScreenWidth() * 100 / 480); } /** * 宽全屏, 根据当前分辨率 动态获取高度 * height 在800*480情况下 的高度 * @return */ public int get480Height(int height480){ int width = getScreenWidth(); return (height480 * width / 480); } /** * 获取状态栏高度 * @return */ public int getStatusBarHeight(){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 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()); sbar = mCtx.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } return sbar; } public int getScreenHeight(){ return mCtx.getResources().getDisplayMetrics().heightPixels; } }