package com.huijimuhe.luban_circle_demo.utils; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; public class ViewUtils { @SuppressWarnings({"unchecked", "UnusedDeclaration"}) public static <T extends View> T findViewById(View view, int id) { return (T) view.findViewById(id); } @SuppressWarnings({"unchecked", "UnusedDeclaration"}) public static <T extends View> T findViewById(Activity activity, int id) { return (T) activity.findViewById(id); } public final static int getWindowsWidth(Activity activity) { DisplayMetrics dm = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(dm); return dm.widthPixels; } public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** 获取手机的密度*/ public static float getDensity(Context context) { DisplayMetrics dm = context.getResources().getDisplayMetrics(); return dm.density; } private static float getScreenSmallestWidthDp(Context context) { DisplayMetrics metrics = context.getResources().getDisplayMetrics(); int smallestWidth = Math.min(metrics.widthPixels, metrics.heightPixels); return pxToDp(smallestWidth, context); } public static boolean hasSw600dp(Context context) { return getScreenSmallestWidthDp(context) > 600; } public static View inflate(int resource, ViewGroup parent) { return LayoutInflater.from(parent.getContext()).inflate(resource, parent, false); } public static boolean isInLandscape(Context context) { return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; } public static boolean isVisible(View view) { return view.getVisibility() == View.VISIBLE; } public static void postOnPreDraw(final View view, final Runnable runnable) { view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { view.getViewTreeObserver().removeOnPreDrawListener(this); runnable.run(); return true; } }); } public static float pxToDp(float px, Context context) { DisplayMetrics metrics = context.getResources().getDisplayMetrics(); return px / metrics.density; } public static int pxToDpInt(float px, Context context) { return Math.round(pxToDp(px, context)); } public static void replaceChild(ViewGroup viewGroup, View oldChild, View newChild) { int index = viewGroup.indexOfChild(oldChild); viewGroup.removeViewAt(index); viewGroup.addView(newChild, index); } public static void setHeight(View view, int height) { ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); if (layoutParams.height == height) { return; } layoutParams.height = height; view.setLayoutParams(layoutParams); } public static void setSize(View view, int size) { ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); if (layoutParams.width == size && layoutParams.height == size) { return; } layoutParams.width = size; layoutParams.height = size; view.setLayoutParams(layoutParams); } public static void setVisibleOrGone(View view, boolean visible) { view.setVisibility(visible ? View.VISIBLE : View.GONE); } public static void setVisibleOrInvisible(View view, boolean visible) { view.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); } public static void setWidth(View view, int width) { ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); if (layoutParams.width == width) { return; } layoutParams.width = width; view.setLayoutParams(layoutParams); } }