Last active
August 29, 2015 14:24
-
-
Save SyllaJay/e7c242fca3ece1369800 to your computer and use it in GitHub Desktop.
A android display utility
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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