package com.wangdaye.mysplash.common.utils; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Point; import android.graphics.Typeface; import android.os.Build; import android.view.Display; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import com.wangdaye.mysplash.Mysplash; import com.wangdaye.mysplash.R; import com.wangdaye.mysplash.common._basic.MysplashActivity; import com.wangdaye.mysplash.common.utils.manager.SettingsOptionManager; import com.wangdaye.mysplash.common.utils.manager.ThemeManager; /** * Display utils. * * An utils class that make operations of display easier. * * */ public class DisplayUtils { private int dpi = 0; public DisplayUtils(Context context) { dpi = context.getResources().getDisplayMetrics().densityDpi; } public float dpToPx(int dp) { if (dpi == 0) { return 0; } return (float) (dp * (dpi / 160.0)); } public static int getStatusBarHeight(Resources r) { int result = 0; int resourceId = r.getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = r.getDimensionPixelSize(resourceId); } return result; } public static int getNavigationBarHeight(Resources r) { if (!isNavigationBarShow()){ return 0; } int result = 0; int resourceId = r.getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId > 0) { result = r.getDimensionPixelSize(resourceId); } return result; } private static boolean isNavigationBarShow(){ MysplashActivity activity = Mysplash.getInstance().getTopActivity(); if (activity != null) { Display display = activity.getWindowManager().getDefaultDisplay(); Point size = new Point(); Point realSize = new Point(); display.getSize(size); display.getRealSize(realSize); return realSize.y != size.y; } else { return false; } } public static void setWindowTop(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Bitmap icon = BitmapFactory.decodeResource(activity.getResources(), R.drawable.ic_launcher); ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription( activity.getString(R.string.app_name), icon, ThemeManager.getPrimaryColor(activity)); activity.setTaskDescription(taskDescription); icon.recycle(); } } public static void initStatusBarStyle(Activity activity) { setStatusBarStyle(activity, false); } public static void setStatusBarStyle(Activity activity, boolean onlyWhiteText) { if (!onlyWhiteText && isNeedSetStatusBarTextDark(activity)) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } } } private static boolean isNeedSetStatusBarTextDark(Context c) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ThemeManager.getInstance(c).isLightTheme(); } public static void cancelTranslucentNavigation(Activity a) { a.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } public static void changeTheme(Context c) { ThemeManager.getInstance(c) .setLightTheme( c, !ThemeManager.getInstance(c).isLightTheme()); } public static void setTypeface(Context c, TextView t) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { t.setTypeface(Typeface.createFromAsset(c.getAssets(), "fonts/Courier.ttf")); } } public static String abridgeNumber(int num) { if (num < 1000) { return String.valueOf(num); } else { num = num / 100; return (num / 10.0) + "K"; } } public static boolean isTabletDevice(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } public static int getGirdColumnCount(Context context) { if (isLandscape(context)) { if (SettingsOptionManager.getInstance(context).isShowGridInLand()) { if (isTabletDevice(context)) { return 3; } else { return 2; } } else { return 1; } } else { if (SettingsOptionManager.getInstance(context).isShowGridInPort() && isTabletDevice(context)) { return 2; } else { return 1; } } } public static boolean isLandscape(Context context) { return context.getResources() .getConfiguration() .orientation == Configuration.ORIENTATION_LANDSCAPE; } }