package com.mm.android.deviceaddmodule.mobilecommon.utils; import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.GradientDrawable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.text.TextPaint; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.TouchDelegate; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.widget.EditText; import android.widget.TextView; import com.mm.android.deviceaddmodule.R; import java.lang.reflect.Field; import java.util.List; public class UIUtils { private static final String TAG = "UIUtils"; private static long mLastClickTime; private static float sDensity = -1; /** * 获取屏幕像素密度 */ public static float getScreenDensity(Context context) { if(context == null)return sDensity; DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics(); sDensity = dm.density; return dm.density; } // 将px值转换为dip或dp值,保证尺寸大小不变 public static int px2dip(DisplayMetrics dM, float pxValue) { final float scale = dM.density; return (int) (pxValue / scale + 0.5f); } // 将dip或dp值转换为px值,保证尺寸大小不变 public static int dip2px(DisplayMetrics dM, float dipValue) { final float scale = dM.density; return (int) (dipValue * scale + 0.5f); } /** * 获取当前屏幕宽度 */ public static int getDefaultDialogWidth(Context context) { return getScreenWidth(context) * 4 / 5; } /** * 获取当前屏幕宽度 */ public static int getScreenWidth(Context context) { if(context == null)return -1; DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics(); return dm.widthPixels; } public static int getDefaultDialogWidthWithLandscape(Context context){ return getScreenHeight(context) * 4 / 5; } /** * 获取当前屏幕高度 */ public static int getScreenHeight(Context context) { if(context == null)return -1; DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics(); return dm.heightPixels; } // 将px值转换为dip或dp值,保证尺寸大小不变 public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } // 将dip或dp值转换为px值,保证尺寸大小不变 public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } // 将px值转换为sp值,保证文字大小不变 public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } // 将sp值转换为px值,保证文字大小不变 public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } // 屏幕宽度(像素) public static int getWindowWidth(Activity context) { DisplayMetrics metric = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(metric); return metric.widthPixels; } // 屏幕高度(像素) public static int getWindowHeight(Activity context) { DisplayMetrics metric = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(metric); return metric.heightPixels; } /** * 检测是否重复点击事件,默认时间为800毫秒 * * @return */ public static boolean isFastDoubleClick() { long time = System.currentTimeMillis(); long timeD = time - mLastClickTime; if (0 < timeD && timeD < 800) { return true; } mLastClickTime = time; return false; } /** * 将当前activity拉到前台 * * @param paramActivity */ public static void goForeground(Activity paramActivity) { if (paramActivity == null) return; Window localWindow = paramActivity.getWindow(); if (localWindow != null) { localWindow.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); localWindow.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); localWindow.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); } } /** * 检测在规定的时间里面是否重复点击事件 * * @return */ public static boolean isFastDoubleClick(long elapse) { long time = System.currentTimeMillis(); long timeD = time - mLastClickTime; if (0 < timeD && timeD < elapse) { return true; } mLastClickTime = time; return false; } /** * 检测在100ms规定的时间里面是否快速触发相同方法两次,针对误触发情况的兼容 * * @return */ public static boolean isFastCallFuncTwice() { long time = System.currentTimeMillis(); long timeD = time - mLastClickTime; if (0 < timeD && timeD < 100) { return true; } mLastClickTime = time; return false; } /** * 进入全屏 * * @param activity */ public static void setFullScreen(Activity activity) { activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } /** * 退出全屏 * * @param activity */ public static void quitFullScreen(Activity activity) { if (activity == null) { return; } final WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN); activity.getWindow().setAttributes(attrs); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } /** * 输入框禁止复制,粘贴 * * @param editText */ public static void UnCopyAble(EditText editText) { if (editText == null) { return; } editText.setLongClickable(false); } /** * 获取状态栏高度 *
*
*/ public static int getStatusBarHeight(Context context) { Class> c = null; Object object = null; Field field = null; int x = 0; int statusBar = 0; try { c = Class.forName("com.android.internal.R$dimen"); object = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(object).toString()); statusBar = context.getResources().getDimensionPixelSize(x); } catch (Exception e) { e.printStackTrace(); } return statusBar == 0 ? dp2px(context, 20) : statusBar; } /** * 设置按钮选中与否 **
* * @param selected * @param views */ public static void setSelected(boolean selected, View... views) { for (View view : views) { view.setSelected(selected); } } public static void setSelected(boolean selected, ViewGroup... viewGroups) { for (ViewGroup viewGroup : viewGroups) { viewGroup.setSelected(selected); for (int i = 0; i < viewGroup.getChildCount(); i++) { View v = viewGroup.getChildAt(i); if (v instanceof ViewGroup) { setSelected(selected, (ViewGroup) v); } else { setSelected(selected, v); } } } } /** * 设置空间是否可用(不置灰) **
* * @param enabled * @param views */ public static void setEnabled(boolean enabled, View... views) { for (View view : views) { view.setEnabled(enabled); } } /** * 启用/禁用控件,包括所有子控件 */ public static void setEnabledSub(boolean enabled, ViewGroup... viewGroups) { for (ViewGroup viewGroup : viewGroups) { viewGroup.setEnabled(enabled); for (int i = 0; i < viewGroup.getChildCount(); i++) { View v = viewGroup.getChildAt(i); if (v instanceof ViewGroup) { setEnabledSub(enabled, (ViewGroup) v); } else { setEnabled(enabled, v); } } } } /** * 启用/禁用 item * * @param enabled * @param viewGroup * @param tv */ public static void setDevDetailItemEnable(boolean enabled, ViewGroup viewGroup, TextView tv) { setEnabledSub(enabled, viewGroup); if (tv == null) { return; } if (enabled) { tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.mobile_common_icon_nextarrow, 0); } else { tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); } } /** * 设置控件可用与否 (置灰) * * @param views 被设置的控件 * @param enabled 是否可用 */ public static void setEnabledEX(boolean enabled, View... views) { for (View view : views) { if (enabled) { view.setEnabled(enabled); view.clearAnimation(); } else { Animation aniAlp = new AlphaAnimation(1f, 0.5f); aniAlp.setDuration(0); aniAlp.setInterpolator(new AccelerateDecelerateInterpolator()); aniAlp.setFillEnabled(true); aniAlp.setFillAfter(true); view.startAnimation(aniAlp); view.setEnabled(enabled); } } } /** * 遍历布局,禁用/启用所有子控件 **
* * @param viewGroup * @param enabled */ public static void setEnabledSubControls(ViewGroup viewGroup, boolean enabled) { setEnabledEX(enabled, viewGroup); for (int i = 0; i < viewGroup.getChildCount(); i++) { View v = viewGroup.getChildAt(i); if (v instanceof ViewGroup) { setEnabledSubControls((ViewGroup) v, enabled); } else { setEnabledEX(enabled, v); } } } /** * 隐藏/显示 **
* * @param visibility * @param views */ public static void setVisibility(int visibility, View... views) { for (View view : views) { view.setVisibility(visibility); } } public static void expandViewTouchDelegate(final View view, final int top, final int bottom, final int left, final int right) { ((View) view.getParent()).post(new Runnable() { @Override public void run() { Rect bounds = new Rect(); view.setEnabled(true); view.getHitRect(bounds); bounds.top -= top; bounds.bottom += bottom; bounds.left -= left; bounds.right += right; TouchDelegate touchDelegate = new TouchDelegate(bounds, view); if (View.class.isInstance(view.getParent())) { ((View) view.getParent()).setTouchDelegate(touchDelegate); } } }); } /** * 设置一组控件显隐 * * @param views * @param flags */ public static void setViewsVisibility(View[] views, int[] flags) { if (views == null) { return; } for (int i = 0; i < views.length; i++) { if (views[i] != null) views[i].setVisibility(i < flags.length ? flags[i] : View.GONE); } } /** * 设置控件显隐 * * @param view * @param flag */ public static void setViewVisibility(View view, int flag) { if (view == null) { return; } view.setVisibility(flag); } public static void setEnableWithAlphaChanged(View view, boolean enable) { if (view == null) { return; } view.setEnabled(enable); view.setAlpha(enable ? 1f : 0.5f); } public static void setEnabledAllInGroup(ViewGroup viewGroup, boolean enabled) { if (viewGroup == null) { return; } viewGroup.setEnabled(enabled); for (int i = 0; i < viewGroup.getChildCount(); i++) { View v = viewGroup.getChildAt(i); if (v instanceof ViewGroup) { setEnabledAllInGroup((ViewGroup) v, enabled); } else { v.setEnabled(enabled); } } } public static int getEncryV2(int byAuthMode, int byEncrAlgr) { int nEncryption = 0; if(byAuthMode == 6 && byEncrAlgr == 0) { nEncryption = 0; } else if(byAuthMode == 0 && byEncrAlgr == 0) { nEncryption = 1; } else if(byAuthMode == 0 && byEncrAlgr == 4) { nEncryption = 2; } else if(byAuthMode == 1 && byEncrAlgr == 4) { nEncryption = 3; } else if(byAuthMode == 2 && byEncrAlgr == 5) { nEncryption = 4; } else if(byAuthMode == 3 && byEncrAlgr == 5) { nEncryption = 5; } else if(byAuthMode == 4 && byEncrAlgr == 5) { nEncryption = 6; } else if(byAuthMode == 5 && byEncrAlgr == 5) { nEncryption = 7; } else if(byAuthMode == 2 && byEncrAlgr == 6) { nEncryption = 8; } else if(byAuthMode == 3 && byEncrAlgr == 6) { nEncryption = 9; } else if(byAuthMode == 4 && byEncrAlgr == 6) { nEncryption = 10; } else if(byAuthMode == 5 && byEncrAlgr == 6) { nEncryption = 11; } else if(byAuthMode == 2 && byEncrAlgr == 7) { nEncryption = 8; // 4或者8 } else if(byAuthMode == 3 && byEncrAlgr == 7) { nEncryption = 9; // 5或9 } else if(byAuthMode == 4 && byEncrAlgr == 7) { nEncryption = 10; // 6或10 } else if(byAuthMode == 5 && byEncrAlgr == 7) { nEncryption = 11; // 7或11 } else if(byAuthMode == 7) // 混合模式WPA-PSK|WPA2-PSK 3或5 { if(byEncrAlgr == 5) { nEncryption = 7; // 5或7 } else if(byEncrAlgr == 6) { nEncryption = 11; // 9或11 } else if(byEncrAlgr == 7) { nEncryption = 11; // 5或7或9或11 } else { nEncryption = 12; } } else if(byAuthMode == 8) // 混合模式WPA|WPA2 2或4 { if(byEncrAlgr == 5) { nEncryption = 6; // 4或6 } else if(byEncrAlgr == 6) { nEncryption = 10; // 8或10 } else if(byEncrAlgr == 7) { nEncryption = 10; // 4或6或8或10 } else { nEncryption = 12; } } else if(byAuthMode == 9) // 混合模式WPA|WPA-PSK 2或3 { if(byEncrAlgr == 5) { nEncryption = 5; // 4或5 } else if(byEncrAlgr == 6) { nEncryption = 9; // 8或9 } else if(byEncrAlgr == 7) { nEncryption = 9; // 4或5或8或9 } else { nEncryption = 12; } } else if(byAuthMode == 10) // 混合模式WPA2|WPA2-PSK 4或5 { if(byEncrAlgr == 5) { nEncryption = 7; // 6或7 } else if(byEncrAlgr == 6) { nEncryption = 11; // 10或11 } else if(byEncrAlgr == 7) { nEncryption = 11; // 6或7或10或11 } else { nEncryption = 12; } } else if(byAuthMode == 11) // 混合模式WPA|WPA-PSK|WPA2|WPA2-PSK 2或3或4或5 { if(byEncrAlgr == 5) { nEncryption = 7; // 4或5或6或7 } else if(byEncrAlgr == 6) { nEncryption = 11; // 8或9或10或11 } else if(byEncrAlgr == 7) { nEncryption = 11; // 4或5或6或7或8或9或10或11 } else { nEncryption = 12; } } else { nEncryption = 12; } return nEncryption; } public static int getEncry(int byAuthMode, int byEncrAlgr) { int nEncryption = 0; if(byAuthMode == 6 && byEncrAlgr == 0) { nEncryption = 0; } else if(byAuthMode == 0 && byEncrAlgr == 0) { nEncryption = 1; } else if(byAuthMode == 0 && byEncrAlgr == 1) { nEncryption = 2; } else if(byAuthMode == 1 && byEncrAlgr == 1) { nEncryption = 3; } else if(byAuthMode == 2 && byEncrAlgr == 2) { nEncryption = 4; } else if(byAuthMode == 3 && byEncrAlgr == 2) { nEncryption = 5; } else if(byAuthMode == 4 && byEncrAlgr == 2) { nEncryption = 6; } else if(byAuthMode == 5 && byEncrAlgr == 2) { nEncryption = 7; } else if(byAuthMode == 2 && byEncrAlgr == 3) { nEncryption = 8; } else if(byAuthMode == 3 && byEncrAlgr == 3) { nEncryption = 9; } else if(byAuthMode == 4 && byEncrAlgr == 3) { nEncryption = 10; } else if(byAuthMode == 5 && byEncrAlgr == 3) { nEncryption = 11; } else if(byAuthMode == 2 && byEncrAlgr == 4) { nEncryption = 8; // 4或者8 } else if(byAuthMode == 3 && byEncrAlgr == 4) { nEncryption = 9; // 5或9 } else if(byAuthMode == 4 && byEncrAlgr == 4) { nEncryption = 10; // 6或10 } else if(byAuthMode == 5 && byEncrAlgr == 4) { nEncryption = 11; // 7或11 } else if(byAuthMode == 7) // 混合模式WPA-PSK|WPA2-PSK 3或5 { if(byEncrAlgr == 2) { nEncryption = 7; // 5或7 } else if(byEncrAlgr == 3) { nEncryption = 11; // 9或11 } else if(byEncrAlgr == 4) { nEncryption = 11; // 5或7或9或11 } else { nEncryption = 12; } } else if(byAuthMode == 8) // 混合模式WPA|WPA2 2或4 { if(byEncrAlgr == 2) { nEncryption = 6; // 4或6 } else if(byEncrAlgr == 3) { nEncryption = 10; // 8或10 } else if(byEncrAlgr == 4) { nEncryption = 10; // 4或6或8或10 } else { nEncryption = 12; } } else if(byAuthMode == 9) // 混合模式WPA|WPA-PSK 2或3 { if(byEncrAlgr == 2) { nEncryption = 5; // 4或5 } else if(byEncrAlgr == 3) { nEncryption = 9; // 8或9 } else if(byEncrAlgr == 4) { nEncryption = 9; // 4或5或8或9 } else { nEncryption = 12; } } else if(byAuthMode == 10) // 混合模式WPA2|WPA2-PSK 4或5 { if(byEncrAlgr == 2) { nEncryption = 7; // 6或7 } else if(byEncrAlgr == 3) { nEncryption = 11; // 10或11 } else if(byEncrAlgr == 4) { nEncryption = 11; // 6或7或10或11 } else { nEncryption = 12; } } else if(byAuthMode == 11) // 混合模式WPA|WPA-PSK|WPA2|WPA2-PSK 2或3或4或5 { if(byEncrAlgr == 2) { nEncryption = 7; // 4或5或6或7 } else if(byEncrAlgr == 3) { nEncryption = 11; // 8或9或10或11 } else if(byEncrAlgr == 4) { nEncryption = 11; // 4或5或6或7或8或9或10或11 } else { nEncryption = 12; } } else { nEncryption = 12; } return nEncryption; } public static int getEncry4Sc(int byAuthMode, int byEncrAlgr) { int nEncryption = 0; if (byAuthMode == 6 && byEncrAlgr == 0) { nEncryption = 0; } else if (byAuthMode == 0 && byEncrAlgr == 0) { nEncryption = 1; } else if (byAuthMode == 0 && byEncrAlgr == 4) { nEncryption = 13; } else if (byAuthMode == 1 && byEncrAlgr == 4) { nEncryption = 14; } else if (byAuthMode == 2 && byEncrAlgr == 5) { nEncryption = 8; } else if (byAuthMode == 3 && byEncrAlgr == 5) { nEncryption = 4; } else if (byAuthMode == 4 && byEncrAlgr == 5) { nEncryption = 10; } else if (byAuthMode == 5 && byEncrAlgr == 5) { nEncryption = 6; } else if (byAuthMode == 2 && byEncrAlgr == 6) { nEncryption = 9; } else if (byAuthMode == 3 && byEncrAlgr == 6) { nEncryption = 5; } else if (byAuthMode == 4 && byEncrAlgr == 6) { nEncryption = 11; } else if (byAuthMode == 5 && byEncrAlgr == 6) { nEncryption = 7; } else if (byAuthMode == 2 && byEncrAlgr == 7) { nEncryption = 9; // 8或者9 } else if (byAuthMode == 3 && byEncrAlgr == 7) { nEncryption = 5; // 4或5 } else if (byAuthMode == 4 && byEncrAlgr == 7) { nEncryption = 11; // 10或11 } else if (byAuthMode == 5 && byEncrAlgr == 7) { nEncryption = 7; // 6或7 } else if (byAuthMode == 7) // 混合模式WPA-PSK|WPA2-PSK 3或5 { if (byEncrAlgr == 5) { nEncryption = 6; // 4或6 } else if (byEncrAlgr == 6) { nEncryption = 7; // 5或7 } else if (byEncrAlgr == 7) { nEncryption = 7; // 4或5或6或7 } else { nEncryption = 12; } } else if (byAuthMode == 8) // 混合模式WPA|WPA2 2或4 { if (byEncrAlgr == 5) { nEncryption = 10; // 8或10 } else if (byEncrAlgr == 6) { nEncryption = 11; // 9或11 } else if (byEncrAlgr == 7) { nEncryption = 10; // 8或9或10或11 } else { nEncryption = 12; } } else if (byAuthMode == 9) // 混合模式WPA|WPA-PSK 2或3 { if (byEncrAlgr == 5) { nEncryption = 8; // 4或8 } else if (byEncrAlgr == 6) { nEncryption = 9; // 5或9 } else if (byEncrAlgr == 7) { nEncryption = 9; // 4或5或8或9 } else { nEncryption = 12; } } else if (byAuthMode == 10) // 混合模式WPA2|WPA2-PSK 4或5 { if (byEncrAlgr == 5) { nEncryption = 10; // 6或10 } else if (byEncrAlgr == 6) { nEncryption = 11; // 7或11 } else if (byEncrAlgr == 7) { nEncryption = 11; // 6或7或10或11 } else { nEncryption = 12; } } else if (byAuthMode == 11) // 混合模式WPA|WPA-PSK|WPA2|WPA2-PSK 2或3或4或5 { if (byEncrAlgr == 5) { nEncryption = 10; // 4或6或8或10 } else if (byEncrAlgr == 6) { nEncryption = 11; // 5或7或9或11 } else if (byEncrAlgr == 7) { nEncryption = 11; // 4或5或6或7或8或9或10或11 } else { nEncryption = 12; } } else { nEncryption = 12; } return nEncryption; } public static Fragment getVisibleFragment(FragmentActivity activity) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); @SuppressLint("RestrictedApi") List