package com.liyu.fakeweather.utils; import android.content.Context; import android.util.DisplayMetrics; import android.view.WindowManager; /** * Created by liyu on 2016/8/30. */ public class SizeUtils { private static int screenWidth = 0; /** * dp转px * * @param context 上下文 * @param dpValue dp值 * @return px值 */ public static int dp2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * px转dp * * @param context 上下文 * @param pxValue px值 * @return dp值 */ public static int px2dp(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * sp转px * * @param context 上下文 * @param spValue sp值 * @return px值 */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * px转sp * * @param context 上下文 * @param pxValue px值 * @return sp值 */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } public static int getScreenWidth(Context context) { if (screenWidth != 0) return screenWidth; WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics();// 创建了一张白纸 windowManager.getDefaultDisplay().getMetrics(dm);// 给白纸设置宽高 screenWidth = dm.widthPixels; return screenWidth; } public static int getScreenWidth(Context context, float padding) { if (screenWidth != 0) return screenWidth - sp2px(context, padding); WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics();// 创建了一张白纸 windowManager.getDefaultDisplay().getMetrics(dm);// 给白纸设置宽高 screenWidth = dm.widthPixels; return screenWidth - sp2px(context, padding); } }