封装获得屏幕宽高的工具类

封装获得屏幕宽高的 
public class WindowUtils {

	private static final String TAG = WindowUtils.class.getSimpleName();
	private static final boolean DEBUG = true;

	/**
	 * 获取屏幕宽度像素
	 * 
	 * @param a
	 * @return
	 */
	public static int getScreenWidth(Activity a) {
		if (a != null) {
			return a.getResources().getDisplayMetrics().widthPixels;
		}
		return 0;
	}

	/**
	 * 获取屏幕高度像素
	 * 
	 * @param a
	 * @return
	 */
	public static int getScreenHeight(Activity a) {
		if (a != null) {
			return a.getResources().getDisplayMetrics().heightPixels;
		}
		return 0;
	}

	/**
	 * 设置全屏
	 * 
	 * @param activity
	 * @param enable
	 */
	public static void setFullScreen(Activity a, boolean on) {
		Window win = a.getWindow();
		WindowManager.LayoutParams winParams = win.getAttributes();
		final int bits = WindowManager.LayoutParams.FLAG_FULLSCREEN;
		if (on) {
			winParams.flags |= bits;
		} else {
			winParams.flags &= ~bits;
		}
		win.setAttributes(winParams);
	}

	public static int getStatusBarHeight(Activity a) {
		if (a == null) {
			return 0;
		}
		Rect rect = new Rect();
		Window win = a.getWindow();
		win.getDecorView().getWindowVisibleDisplayFrame(rect);
		return rect.top;
	}

	/**
	 * 获取状�?�?通知�?高度
	 * 
	 * @param a
	 * @return
	 */
	public static int getStatusBarHeight(Activity a, int i) {
		try {
			Object o = Class.forName("com.android.internal.R$dimen").newInstance();
			Field field = Class.forName("com.android.internal.R$dimen").getField("status_bar_height");
			int x = Integer.parseInt(field.get(o).toString());
			int y = a.getResources().getDimensionPixelSize(x);
			return y;
		} catch (Exception e) {
			if (DEBUG)
				Log.e(TAG, "Exception", e);
		}
		return 0;
	}

	/**
	 * 获取标题栏高�?
	 * 
	 * @param activity
	 * @return
	 */
	public static int getTitleBarHeight(Activity a) {
		if (a == null) {
			return 0;
		}
		Rect rect = new Rect();
		Window win = a.getWindow();
		win.getDecorView().getWindowVisibleDisplayFrame(rect);
		int contentViewTop = win.findViewById(Window.ID_ANDROID_CONTENT).getTop();
		return contentViewTop;
	}

	/**
	 * 判断横屏
	 * 
	 * @param activity
	 * @return
	 */
	public static boolean isScreenLandscape(Activity a) {
		if (a.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
			return true;
		}
		return false;
	}

	/**
	 * 判断竖屏
	 * 
	 * @param activity
	 * @return
	 */
	public static boolean isScreenPortrait(Activity a) {
		if (a.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
			return true;
		}
		return false;
	}

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

	private WindowUtils() {/* do not new me */
	};
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值