package de.devland.masterpassword.base.util; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.support.annotation.ColorRes; import android.support.v4.content.ContextCompat; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.app.AppCompatDelegate; import android.util.DisplayMetrics; import android.widget.ImageView; /** * Created by deekay on 27/02/15. */ public class Utils { /** * This method converts dp unit to equivalent pixels, depending on device density. * * @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels * @param context Context to get resources and device specific display metrics * @return A float value to represent px equivalent to dp depending on device density */ public static float convertDpToPixel(float dp, Context context){ Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float px = dp * (metrics.densityDpi / 160f); return px; } /** * This method converts device specific pixels to density independent pixels. * * @param px A value in px (pixels) unit. Which we need to convert into db * @param context Context to get resources and device specific display metrics * @return A float value to represent dp equivalent to px value */ public static float convertPixelsToDp(float px, Context context){ Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float dp = px / (metrics.densityDpi / 160f); return dp; } public static void setThemeModeFromName(String themeMode) { switch (themeMode) { case ThemeMode.LIGHT: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); break; case ThemeMode.DARK: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); break; case ThemeMode.AUTO: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO); break; } } public static void tint(Context context, ImageView imageView, @ColorRes int tint) { Drawable wrapped = DrawableCompat.wrap(imageView.getDrawable()); DrawableCompat.setTint(wrapped, ContextCompat.getColor(context, tint)); imageView.setImageDrawable(wrapped); } public interface ThemeMode { String DARK = "DARK"; String LIGHT = "LIGHT"; String AUTO = "AUTO"; } }