package com.kabouzeid.gramophone.util; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.support.annotation.AttrRes; import android.support.annotation.ColorInt; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.graphics.drawable.VectorDrawableCompat; import android.util.TypedValue; import android.view.Display; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import com.kabouzeid.appthemehelper.util.TintHelper; import com.kabouzeid.gramophone.R; /** * @author Karim Abou Zeid (kabouzeid) */ public class Util { public static int getActionBarSize(@NonNull Context context) { TypedValue typedValue = new TypedValue(); int[] textSizeAttr = new int[]{R.attr.actionBarSize}; int indexOfAttrTextSize = 0; TypedArray a = context.obtainStyledAttributes(typedValue.data, textSizeAttr); int actionBarSize = a.getDimensionPixelSize(indexOfAttrTextSize, -1); a.recycle(); return actionBarSize; } public static Point getScreenSize(@NonNull Context c) { Display display = ((WindowManager) c.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); Point size = new Point(); display.getSize(size); return size; } @TargetApi(19) public static void setStatusBarTranslucent(@NonNull Window window) { window.setFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } public static void setAllowDrawUnderStatusBar(@NonNull Window window) { window.getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } public static void hideSoftKeyboard(@Nullable Activity activity) { if (activity != null) { View currentFocus = activity.getCurrentFocus(); if (currentFocus != null) { InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0); } } } public static boolean isTablet(@NonNull final Resources resources) { return resources.getConfiguration().smallestScreenWidthDp >= 600; } public static boolean isLandscape(@NonNull final Resources resources) { return resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; } public static Drawable resolveDrawable(@NonNull Context context, @AttrRes int drawableAttr) { TypedArray a = context.obtainStyledAttributes(new int[]{drawableAttr}); Drawable drawable = a.getDrawable(0); a.recycle(); return drawable; } public static int resolveDimensionPixelSize(@NonNull Context context, @AttrRes int dimenAttr) { TypedArray a = context.obtainStyledAttributes(new int[]{dimenAttr}); int dimensionPixelSize = a.getDimensionPixelSize(0, 0); a.recycle(); return dimensionPixelSize; } public static Drawable getVectorDrawable(@NonNull Context context, @DrawableRes int id) { return getVectorDrawable(context.getResources(), id, context.getTheme()); } public static Drawable getVectorDrawable(@NonNull Resources res, @DrawableRes int resId, @Nullable Resources.Theme theme) { if (Build.VERSION.SDK_INT >= 21) { return res.getDrawable(resId, theme); } return VectorDrawableCompat.create(res, resId, theme); } public static Drawable getTintedVectorDrawable(@NonNull Context context, @DrawableRes int id, @ColorInt int color) { return TintHelper.createTintedDrawable(getVectorDrawable(context.getResources(), id, context.getTheme()), color); } public static Drawable getTintedVectorDrawable(@NonNull Resources res, @DrawableRes int resId, @Nullable Resources.Theme theme, @ColorInt int color) { return TintHelper.createTintedDrawable(getVectorDrawable(res, resId, theme), color); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public static boolean isRTL(@NonNull Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { Configuration config = context.getResources().getConfiguration(); return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } else return false; } public static boolean isAllowedToAutoDownload(final Context context) { switch (PreferenceUtil.getInstance(context).autoDownloadImagesPolicy()) { case "always": return true; case "only_wifi": final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); return netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.isConnectedOrConnecting(); case "never": default: return false; } } }