標籤:
import java.lang.reflect.Field;import android.app.Activity;import android.content.Context;import android.graphics.Point;import android.util.DisplayMetrics;import android.view.Display;import android.view.Window;import android.view.WindowManager;/** * 擷取螢幕寬高工具類 * Created by Administrator on 2015/10/21 0021. */public class ScreenUtils { /** * 用於擷取狀態列的高度。 * * @return 返回狀態列高度的像素值。 */ public static int getStatusBarHeight(Activity activity) { try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object obj = c.newInstance(); Field field = c.getField("status_bar_height"); int x = Integer.parseInt(field.get(obj).toString()); return activity.getResources().getDimensionPixelSize(x); } catch (Exception e) { //LogHelper.e("Exception", "*****EXCEPTION*****\n", e); } return 0; } /** * 用於擷取狀態列的高度。 使用Resource對象擷取(推薦這種方式) * * @return 返回狀態列高度的像素值。 */ public static int getStatusBarHeight(Context context) { int result = 0; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } /** * 擷取標題列高度 * * @param activity * @return */ public static int getTitleBarHeight(Activity activity) { int contentTop = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); return contentTop - getStatusBarHeight(activity); } /** * 在Activity中擷取螢幕的高度和寬度 * * @param activity 在真機中,有時候會發現得到的尺寸不是很準確,需要在AndroidManifest中添加如下配置: * <supports-screens android:smallScreens="true" * android:normalScreens="true" android:largeScreens="true" * android:resizeable="true" android:anyDensity="true" /> */ public static int[] getScreenSize(Activity activity) { Display display = activity.getWindowManager().getDefaultDisplay(); Point point = new Point(); display.getSize(point); return new int[] { point.x, point.y }; } /** * 在非Activity中,通常會在Custom View時 * <p/> * 目前不推薦使用(3.2及以下) * * @param context 在真機中,有時候會發現得到的尺寸不是很準確,需要在AndroidManifest中添加如下配置: * <supports-screens android:smallScreens="true" * android:normalScreens="true" android:largeScreens="true" * android:resizeable="true" android:anyDensity="true" /> */ public static int[] getScreenSize(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); return new int[] { dm.widthPixels, dm.heightPixels }; }}
android擷取螢幕寬高工具類