Skip to content

Instantly share code, notes, and snippets.

@SyllaJay
Last active August 29, 2015 14:24
Show Gist options
  • Save SyllaJay/e7c242fca3ece1369800 to your computer and use it in GitHub Desktop.
Save SyllaJay/e7c242fca3ece1369800 to your computer and use it in GitHub Desktop.
A android display utility
/**
* Copyright (C) 2014 Jay.
*
* All Rights Reserved.
*/
package com.tryear.jandroid.lib.util;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import com.jay.android.lib.res.ResourcesUtils;
/**
* Description
*
* @author Jay, created by Jay on 2014-01-22.
*/
public class DisplayUtils {
private static final String TAG = "DisplayUtils";
private static final boolean LOCAL_DEBUG = true;
public static String dump(Context context) {
DisplayMetrics displaysMetrics = context.getResources().getDisplayMetrics();
String info = displaysMetrics.toString() + ", densityDpi=" + displaysMetrics.densityDpi;
return info;
}
/**
* retrieve Display Metrics
*
* @param context
* @return
*/
public static DisplayMetrics getDisplayMetrics(Context context) {
return displaysMetrics = context.getResources().getDisplayMetrics();
}
public static float getDisplayWidth(Context context) {
DisplayMetrics displaysMetrics = context.getResources().getDisplayMetrics();
return displaysMetrics.widthPixels;
}
public static float getDisplayHeight(Context context) {
DisplayMetrics displaysMetrics = context.getResources().getDisplayMetrics();
return displaysMetrics.heightPixels;
}
public static int getStatusBarHeight1(Context context) {
int statusBarHeight = 0;
try {
Rect frame = new Rect();
Activity activity = (Activity) context;
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
statusBarHeight = frame.top;
return statusBarHeight;
} catch (Exception e) {
e.printStackTrace();
}
return statusBarHeight;
}
public static int getStatusBarHeight2(Context context) {
int statusBarHeight = 0;
Class<?> c = null;
Object obj = null;
java.lang.reflect.Field field = null;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
int x = Integer.parseInt(field.get(obj).toString());
statusBarHeight = context.getResources().getDimensionPixelSize(x);
return statusBarHeight;
} catch (Exception e) {
e.printStackTrace();
}
return statusBarHeight;
}
public static int getStatusBarHeight(Context context) {
int statusBarHeight = 0;// 25 dip
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
return statusBarHeight;
}
public static int getNavigationBarHeight(Context context) {// 48 dip
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height",
"dimen", "android");
if (resourceId > 0) {
return resources.getDimensionPixelSize(resourceId);
}
return 0;
}
public int getActionBarHeight(Context context) {
int actionBarHeight = 0; // 48 dip
TypedValue tv = new TypedValue();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
} else {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
return actionBarHeight;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment