package ren.solid.library.utils; import android.content.Context; import android.content.res.TypedArray; import android.util.DisplayMetrics; import android.util.TypedValue; import ren.solid.library.fragment.base.BaseFragment; /** * Created by _SOLID * Date:2016/3/30 * Time:19:37 */ public class ViewUtils { /** * 根据Class创建Fragment * * @param clazz the Fragment of create * @return */ public static BaseFragment createFragment(Class<?> clazz) { BaseFragment resultFragment = null; String className = clazz.getName(); try { try { resultFragment = (BaseFragment) Class.forName(className).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { e.printStackTrace(); } return resultFragment; } public static DisplayMetrics getDisplayMetrics(Context context) { return context.getResources().getDisplayMetrics(); } /** * 获取屏幕的宽度 * * @param context context * @return */ public static int getScreenWidth(Context context) { DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); return displayMetrics.widthPixels; } /** * 获取屏幕的高度 * * @param context context * @return */ public static int getScreenHeight(Context context) { DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); return displayMetrics.heightPixels; } //转换dp为px public static int dp2px(Context context, int dip) { float scale = context.getResources().getDisplayMetrics().density; return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1)); } //转换px为dp public static int px2dp(Context context, int px) { float scale = context.getResources().getDisplayMetrics().density; return (int) (px / scale + 0.5f * (px >= 0 ? 1 : -1)); } //转换sp为px public static int sp2px(Context context, float spValue) { float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } //转换px为sp public static int px2sp(Context context, float pxValue) { float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } public static int getThemeColorPrimary(Context ctx) { TypedValue typedValue = new TypedValue(); ctx.getTheme().resolveAttribute(android.R.attr.theme, typedValue, true); int[] attribute = new int[]{android.R.attr.colorPrimary}; TypedArray array = ctx.obtainStyledAttributes(typedValue.resourceId, attribute); int color = array.getColor(0, -1); array.recycle(); return color; } public static int getThemeColorPrimaryDark(Context ctx) { TypedValue typedValue = new TypedValue(); ctx.getTheme().resolveAttribute(android.R.attr.theme, typedValue, true); int[] attribute = new int[]{android.R.attr.colorPrimaryDark}; TypedArray array = ctx.obtainStyledAttributes(typedValue.resourceId, attribute); int color = array.getColor(0, -1); array.recycle(); return color; } public static int getThemeColorAccent(Context ctx) { TypedValue typedValue = new TypedValue(); ctx.getTheme().resolveAttribute(android.R.attr.theme, typedValue, true); int[] attribute = new int[]{android.R.attr.colorAccent}; TypedArray array = ctx.obtainStyledAttributes(typedValue.resourceId, attribute); int color = array.getColor(0, -1); array.recycle(); return color; } }