/* * Copyright (C) 2015 Federico Iosue (federico.iosue@gmail.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package it.feio.android.omninotes.utils; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.graphics.Point; import android.graphics.Rect; import android.os.Build; import android.support.v7.app.ActionBarActivity; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.WindowManager; public class Display { public static View getRootView(Activity mActivity) { return mActivity.getWindow().getDecorView().findViewById(android.R.id.content); } @SuppressWarnings("deprecation") @SuppressLint("NewApi") public static Point getUsableSize(Context mContext) { Point displaySize = new Point(); try { WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); if (manager != null) { android.view.Display display = manager.getDefaultDisplay(); if (display != null) { if (android.os.Build.VERSION.SDK_INT < 13) { displaySize.set(display.getWidth(), display.getHeight()); } else { display.getSize(displaySize); } } } } catch (Exception e) { Log.e(Constants.TAG , "Error checking display sizes", e); } return displaySize; } public static Point getVisibleSize(Activity activity) { Point displaySize = new Point(); Rect r = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); displaySize.x = r.right - r.left; displaySize.y = r.bottom - r.top; return displaySize; } public static Point getFullSize(View view) { Point displaySize = new Point(); displaySize.x = view.getRootView().getWidth(); displaySize.y = view.getRootView().getHeight(); return displaySize; } public static int getStatusBarHeight(Context mContext) { int result = 0; int resourceId = mContext.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = mContext.getResources().getDimensionPixelSize(resourceId); } return result; } public static int getNavigationBarHeightStandard(Context mContext) { int resourceId = mContext.getResources().getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId > 0) { return mContext.getResources().getDimensionPixelSize(resourceId); } return 0; } public static int getNavigationBarHeight(View view) { return (getFullSize(view).y - getUsableSize(view.getContext()).y); } @SuppressLint("NewApi") public static int getActionbarHeight(Object mObject) { int res = 0; if (ActionBarActivity.class.isAssignableFrom(mObject.getClass())) { res = ((ActionBarActivity) mObject).getSupportActionBar().getHeight(); } else if (Activity.class.isAssignableFrom(mObject.getClass())) { res = ((Activity) mObject).getActionBar().getHeight(); } return res; } // public static int getActionBarHeight(Activity mActivity) { // Rect r = new Rect(); // Window window = mActivity.getWindow(); // window.getDecorView().getWindowVisibleDisplayFrame(r); // int StatusBarHeight = r.top; // int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); // int actionBarHeight = contentViewTop - StatusBarHeight; // return actionBarHeight; // } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public static Point getScreenDimensions(Context mContext) { WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); android.view.Display display = wm.getDefaultDisplay(); Point size = new Point(); DisplayMetrics metrics = new DisplayMetrics(); display.getRealMetrics(metrics); size.x = metrics.widthPixels; size.y = metrics.heightPixels; return size; } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public static int getNavigationBarHeightKitkat(Context mContext) { return getScreenDimensions(mContext).y - getUsableSize(mContext).y; } public static boolean orientationLandscape(Context context) { return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; } }