001package com.gigya.android.sdk.utils;
002
003import android.app.Activity;
004import android.content.Context;
005import android.content.ContextWrapper;
006import android.content.res.Configuration;
007import android.util.DisplayMetrics;
008import android.util.Pair;
009
010public class UiUtils {
011
012    /**
013     * Convert dp unit to equivalent pixels, depending on device density.
014     */
015    public static float dpToPixel(float dp, Context context) {
016        return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
017    }
018
019    /**
020     * Convert device specific pixels to density independent pixels.
021     */
022    public static float pixelsToDp(float px, Context context) {
023        return px / ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
024    }
025
026    /**
027     * Get device screen size in pixels.
028     *
029     * @param context Activity context.
030     * @return A pair of width and height pixel dimensions.
031     */
032    public static Pair<Integer, Integer> getScreenSize(Activity context) {
033        DisplayMetrics displayMetrics = new DisplayMetrics();
034        context.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
035        return new Pair<>(displayMetrics.widthPixels, displayMetrics.heightPixels);
036    }
037
038    public static boolean isPortrait(Context context) {
039        final int orientation = context.getResources().getConfiguration().orientation;
040        return orientation == Configuration.ORIENTATION_PORTRAIT;
041    }
042
043    public static Activity findActivity(Context context) {
044        if (context == null)
045            return null;
046        else if (context instanceof Activity)
047            return (Activity) context;
048        else if (context instanceof ContextWrapper)
049            return findActivity(((ContextWrapper) context).getBaseContext());
050        return null;
051    }
052}