wb安卓UiUTils

这篇博客主要介绍了安卓开发中常用的UiUtils工具集,内容来源于网络和个人收集,涵盖了多种UI操作辅助方法。
摘要由CSDN通过智能技术生成

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);
        }
    }

}

内容大部分来自网络
自己收集的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值