package com.kth.common.utils;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.View;
import android.view.Window;
public class DisplayUnitConvertUtil {
private static int[] mLocation = new int[2];
private static Rect mStatusBarRect = new Rect();
private static final float DEFAULT_HDIP_DENSITY_SCALE = 1.5f;
public static float DPFromPixel(Context context, int pixel) {
float scale = context.getResources().getDisplayMetrics().density;
return (pixel / DEFAULT_HDIP_DENSITY_SCALE * scale);
}
public static int PixelFromDP(Context context, float dip) {
float scale = context.getResources().getDisplayMetrics().density;
return (int)(dip / scale * DEFAULT_HDIP_DENSITY_SCALE);
}
public static Point getContentLocation(View view) {
Point point = getScreenLocation(view);
point.y -= getContentOffsetFromTop(view);
return point;
}
public static Point getScreenLocation(View view) {
view.getLocationOnScreen(mLocation);
return new Point(mLocation[0], mLocation[1]);
}
public static int getContentOffsetFromTop(View view) {
int offset = view.getRootView().findViewById(Window.ID_ANDROID_CONTENT).getTop();
if (offset == 0) {
view.getWindowVisibleDisplayFrame(mStatusBarRect);
offset = mStatusBarRect.top;
}
return offset;
}
}