UiUtils
package common.library.utils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.SpannedString;
import android.text.style.AbsoluteSizeSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import java.util.HashMap;
import java.util.Map;
/**
* @Author Liudeli
* @Describe:所有与UI相关操纵的工具类
*/
public class UIUtils {
private static final String TAG = UIUtils.class.getSimpleName();
/**
* 通过ID获取颜色值
* @param colorId
* @return
*/
public static int getColor(Context mContext, int colorId) {
return mContext.getResources().getColor(colorId);
}
/**
* 得到图片 - use Resource by id
*
* @param id
* @return
*/
public static Drawable getDrawalbe(int id) {
return getResource().getDrawable(id);
}
/**
* findViewById的泛型封装,减少强转代码
* @param layout
* @param id
* @param <T>
* @return
*/
public static <T extends View> T findViewById(View layout, int id) {
return (T) layout.findViewById(id);
}
/**
* 通过ID获取View
* @param layoutId
* @return
*/
public static View getXmlVIew(Context mContext, int layoutId) {
return View.inflate(mContext, layoutId, null);
}
/**
* 通过ID获取 View Item 布局的View
* @param mContext
* @param layoutId
* @return
*/
public static View getItemView(Context mContext, int layoutId) {
return LayoutInflater.from(mContext).inflate(layoutId, null);
}
/**
* dp转换px
* @param dp
* @return
*/
public static int dp2px(Context mContext, int dp) {
float density = mContext.getResources().getDisplayMetrics().density;
return (int) (dp*density+0.5);
}
/**
* px转换dp
* @param px
* @return
*/
public static int px2dp(Context mContext, int px) {
float density = mContext.getResources().getDisplayMetrics().density;
return (int) (px/density+0.5);
}
/**
* 通过arrayId获取string.xml里面指定的arrayId字符串数组
* @param arrayId
* @return
*/
public static String[] getStringArray(Context mContext, int arrayId) {
return mContext.getResources().getStringArray(arrayId);
}
/**
* 用于跳转Activity
* @param cls
*/
public static void startActivity(Activity activity, Class<?> cls) {
activity.startActivity(new Intent(activity, cls));
}
/**
* 用于ForResult方式跳转Activity
* @param activity
* @param cls
* @param requestCode
*/
public static void startActivityForResult(Activity activity, Class<?> cls, int requestCode) {
activity.startActivityForResult(new Intent(activity, cls), requestCode);
}
/**
* 待参数的方式跳转Activity
* @param activity
* @param cls
* @param params
* @param <T>
*/
public static <T extends String> void startActivityForIntentParam(Activity activity, Class<?> cls, Map<String, T> params) {
Intent intent = new Intent(activity, cls);
for (Map.Entry<String, T> entry : params.entrySet()) {
intent.putExtra(entry.getKey(), entry.getValue());
}
activity.startActivity(intent);
}
/**
* 获取其他Activity传过来的参数,转成Map集合
* @param activity
* @param params
* @return
*/
public static Map receiveForIntentParam(Activity activity, String ... params) {
Intent intent = activity.getIntent();
Map<String, String> mMap = new HashMap<>();
for (int i = 0; i<params.length; i++) {
mMap.put(params[i], intent.getStringExtra(params[i]));
}
return mMap.size()==0?null:mMap;
}
/**
* 设置EditText的hint字体大小
* @param editText
* @param dpSize
* @param textString
*/
public static void setEditTextHint(EditText editText, int dpSize,String textString) {
SpannableString ss = new SpannableString(textString);
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(dpSize, true);
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_USER);
editText.setHint(new SpannedString(ss));
}
/**
* 设置EditText的hint颜色与字体大小
* @param editText
* @param color
* @param dpSize
* @param textString
*/
public static void setEditTextHint(EditText editText, int color, int dpSize,String textString) {
SpannableString ss = new SpannableString(textString);
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(dpSize, true);
editText.setHintTextColor(color);
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_USER);
editText.setHint(new SpannedString(ss));
}
/**
* 设置EditText的hint颜色与字体大小
* @param editText
* @param color
* @param dpSize
* @param textString
* @param isDip
*/
public static void setEditTextHint(EditText editText, int color, int dpSize,String textString, boolean isDip) {
SpannableString ss = new SpannableString(textString);
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(dpSize, isDip);
editText.setHintTextColor(color);
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setHint(new SpannedString(ss));
}
/**
* Java代码设置控件大小,这个方法没有什么卵用
* @param view 控件
* @param width 宽度,单位:像素
* @param height 高度,单位:像素
*/
public static void setViewSize(View view,int width,int height){
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = width;
params.height = height;
view.setLayoutParams(params);
}
/**
* 得到标签主题Drawable
*
* @param type 需要类型:1、2、3、4、5
* @return
*/
public static Drawable getLabelDrawable(String type) {
if (type.equals("1")) {
return UiUtils.getDrawalbe(R.drawable.shape_label_text_1);
} else if (type.equals("2")) {
return UiUtils.getDrawalbe(R.drawable.shape_label_text_2);
} else if (type.equals("3")) {
return UiUtils.getDrawalbe(R.drawable.shape_label_text_3);
} else if (type.equals("4")) {
return UiUtils.getDrawalbe(R.drawable.shape_label_text_4);
} else if (type.equals("5")) {
return UiUtils.getDrawalbe(R.drawable.shape_label_text_5);
} else {
return UiUtils.getDrawalbe(R.drawable.shape_label_text_1);
}
}
/**
* 得到标签字体颜色
*
* @param type 需要类型:1、2、3、4、5
* @return
*/
public static int getLabelColor(String type) {
if (type.equals("1")) {
return UiUtils.getColor(R.color.label_text_1_text);
} else if (type.equals("2")) {
return UiUtils.getColor(R.color.label_text_2_text);
} else if (type.equals("3")) {
return UiUtils.getColor(R.color.label_text_3_text);
} else if (type.equals("4")) {
return UiUtils.getColor(R.color.label_text_4_text);
} else if (type.equals("5")) {
return UiUtils.getColor(R.color.label_text_5_text);
} else {
return UiUtils.getColor(R.color.label_text_1_text);
}
}
/**
* 判断是否有网络
*/
public static boolean isNetworkAvailable() {
// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return false;
} else {
// 获取NetworkInfo对象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
if (networkInfo != null && networkInfo.length > 0) {
for (int i = 0; i < networkInfo.length; i++) {
LogUtils.d("当前网络:类型:" + networkInfo[i].getTypeName() + "===状态:" + networkInfo[i].getState());
// 判断当前网络状态是否为连接状态
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
/**
* 得到状态栏高度
*/
public static int getStatusBarHeight() {
int result = 0;
int resourceId = getResource().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResource().getDimensionPixelSize(resourceId);
}
return result;
}
/**
* 得到屏幕宽度
*
* @return px
*/
public static int getScreenWidth() {
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm);// 取得窗口属性
return dm.widthPixels;
}
/**
* 得到屏幕高度
*
* @return px
*/
public static int getScreenHeight() {
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm);// 取得窗口属性
return dm.heightPixels;
}
/**
* 图片高度(宽度输入,得到图片的显示高度)
* <p/>
* 通过比例公式:screenWidth/x = 750/560 (微绘图片规定尺寸)
*
* @return
*/
public static int getPicShowHeight(int width) {
int h = Math.round((float) (width * 560) / (float) 750);
return h;
}
/**
* 图片高度(宽度全屏,得到图片的显示高度)
* <p/>
* 通过比例公式:screenWidth/x = 2/1 (微绘图片规定尺寸)
*
* @return
*/
public static int getPicShowHeight() {
int h = Math.round((float) (getScreenWidth() * 1) / (float) 2);
return h;
}
/**
* 显示Toast
*
* @param message
*/
public static void showToast(String message) {
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
/**
* 验证手机号
*
* @param mobiles
* @return
*/
public static boolean isMobile(String mobiles) {
Pattern p = Pattern.compile("^((13[0-9])|(14[0-9])|(15[0-9])|(18[0-9])|(16[0-9]))\\d{8}$");
Matcher m = p.matcher(mobiles);
return m.matches();
}
/**
* 获取dimens中的值 - use Resource by id
*
* @param homePictureHeight id
* @return
*/
public static int getDimens(int homePictureHeight) {
return (int) getResource().getDimension(homePictureHeight);
}
/**
* 把Runnable 提交到主线程
*
* @param runnable
*/
public static void runOnUiThread(Runnable runnable) {
// 在主线程运行
if (android.os.Process.myTid() == MoodApplication.getMainTid()) {
runnable.run();
} else {
//获取handler
MoodApplication.getHandler().post(runnable);
}
}
}
内容大部分来自网络
自己收集的