package org.horaapps.leafpic.util; import android.content.Context; import android.content.res.Resources; import android.graphics.Point; import android.util.DisplayMetrics; import android.view.Display; import android.view.WindowManager; /** * Created by dnld on 11/03/16. */ public class Measure { public static final String TAG = "Measure"; public static int pxToDp(int px, Context c) { DisplayMetrics displayMetrics = c.getResources().getDisplayMetrics(); return Math.round(px * (displayMetrics.ydpi / DisplayMetrics.DENSITY_DEFAULT)); } public static int getStatusBarHeight(Resources r) { int resourceId = r.getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) return r.getDimensionPixelSize(resourceId); return 0; } public static int getNavBarHeight(Context ct){ return getNavigationBarSize(ct).y; } public static Point getNavigationBarSize(Context context) { Point appUsableSize = getAppUsableScreenSize(context); Point realScreenSize = getRealScreenSize(context); // navigation bar on the right if (appUsableSize.x < realScreenSize.x) { return new Point(realScreenSize.x - appUsableSize.x, appUsableSize.y); } // navigation bar at the bottom if (appUsableSize.y < realScreenSize.y) { return new Point(appUsableSize.x, realScreenSize.y - appUsableSize.y); } // navigation bar is not present return new Point(); } private static Point getAppUsableScreenSize(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); Point size = new Point(); display.getSize(size); return size; } private static Point getRealScreenSize(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); Point size = new Point(); display.getRealSize(size); return size; } public static int rotateBy(int current, int degrees) { // TODO: 21/08/16 a better way should exist /*int rotation = current + degrees; if (rotation > 359) rotation -=360; if (rotation < 0) rotation +=360;*/ return (current + degrees) % 360; } }