最近项目中的一些常用工具类写一下

我们在项目中经常遇到要自己写log,或者自己写Toast,亦或者自己写一些工具啊,大家没有觉得太麻烦了吗?相似的东西却要连续写很多边,连自己恐怕都要觉得头疼了,这是我的项目中自己写的一个工具类,大家可以看一下,希望对你们有所帮助!
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Environment;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;

import com.android.hht.superapp.R;

/**
 * 可重用的方法工具类
 * 
 * @author WYZ
 * 
 */
public class PublicUtils {
	private static ProgressDialog progress;
	private static Toast mToast;
	public static boolean isLogin;
	private static boolean isOpen = true;

	/**
	 * log工具类,统一管理log
	 * @param tag
	 * @param msg
	 */
	public static void myLog(String tag,String msg){
		if(isOpen){
			Log.d(tag, msg);
		}
	}
	// 判断SD卡是否存在
	public static boolean hasSDCard() {
		String status = Environment.getExternalStorageState();
		if (!status.equals(Environment.MEDIA_MOUNTED)) {
			return false;
		}
		return true;
	}

	// 文件路径
	public static String getRootFilePath() {
		if (hasSDCard()) {
			return Environment.getExternalStorageDirectory().getAbsolutePath()
					+ "/" +SuperConstants.LOCAL_FILE + "/";
		} else {
			return Environment.getDataDirectory().getAbsolutePath() + "/data/" + SuperConstants.LOCAL_FILE + "/";
		}
	}

	/**
	 * 网络链接的判断
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isNetWork(Context context) {
		boolean isNetWork;
		ConnectivityManager connectivity = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		if (null == connectivity) {
			isNetWork = false;
		} else {
			NetworkInfo info = connectivity.getActiveNetworkInfo();
			if (null == info || !info.isConnected()) {
				isNetWork = false;
			} else {
				isNetWork = true;
			}
		}
		return isNetWork;
	}

	/**
	 * Toast显示信息
	 * 
	 * @param context
	 * @param msg
	 *            文字信息
	 */
	public static void showToast(Context context, String msg) {
		if (mToast == null) {
			mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
			mToast.setGravity(Gravity.CENTER, 0, 0);
		} else {
			mToast.setText(msg);
			
		}
		mToast.show();
	}

	/**
	 * Toast显示信息
	 * 
	 * @param context
	 * @param id
	 *            信息id
	 */
	public static void showToastId(Context context, int id) {
		if (mToast == null) {
			mToast = Toast.makeText(context, id, Toast.LENGTH_SHORT);
			mToast.setGravity(Gravity.CENTER, 0, 0);
		} else {
			mToast.setText(id);
		}
		mToast.show();
	}

	/**
	 * 加载提示
	 * 
	 * @param context
	 */
	public static void showProgress(Context context) {
		if (null == progress) {
			progress = new ProgressDialog(context, R.style.progress_dialog);
			progress.setIndeterminate(false);
			progress.setCancelable(true);
			progress.setCanceledOnTouchOutside(false);
			progress.show();
			progress.setContentView(R.layout.progress_layout);
		} else {
			try{
				progress.show();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}

	public static void cancelProgress() {
		if (null != progress) {
			if(progress.isShowing()){
				progress.cancel();
			}
			progress = null;
		}
	}

	/**
	 * 获取字符串长度
	 * 
	 * @param _str
	 * @return 字符串长度
	 */
	public static int getStrLength(String _str) {
		int strLen = 0;
		String chinese = "[\u0391-\uFFE5]";
		for (int i = 0; i < _str.length(); i++) {
			String temp = _str.substring(i, i + 1);
			if (temp.matches(chinese)) { 
				strLen += 2;
			} else {
				strLen += 1;
			}
		}
		return strLen;
	}

	/**
	 * 检查是否都是邮箱字符
	 * 
	 * @param str
	 * @return
	 */
	public static boolean checkEmail(String str) {
		Pattern p = Pattern
				.compile("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.([a-zA-Z0-9_-])+)+$");
		Matcher m = p.matcher(str);
		boolean b = m.matches();
		return b;
	}
	
	/**
	 * 检查是否都是手机
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isPhone(String str) {
		if (str.matches("^(13|15|17|18)\\d{9}$") && 11 == str.length()) {
			return true;
		}
		return false;
	}

	/**
	 * 检查是否有不合法字符
	 * 
	 * @param str
	 *            需要检查的字符串
	 * @return 返回不合法字符
	 */
	public static String isPassword(String str) {
		int count = 0;
		boolean isNormal;
		StringBuffer sb = new StringBuffer();
		char[] charArray = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p',
				'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c',
				'v', 'b', 'n', 'm', '1', '2', '3', '4', '5', '6', '7', '8',
				'9', '0', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P',
				'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C',
				'V', 'B', 'N', 'M' };
		for (int i = 0; i < str.length(); i++) {
			isNormal = false;
			char c = str.charAt(i);
			for (int j = 0; j < charArray.length; j++) {
				// 与以上字符有相同的就记录一次
				if (c == charArray[j]) {
					count++;
					isNormal = true;
				}
			}
			if (isNormal == false) {
				sb.append('"');
				sb.append(c);
				sb.append('"');
				sb.append(',');
			}
		}
		// 每个字符都符合就放回null
		if (count == str.length()) {
			return null;

		} else {

			return sb.toString();
		}
	}
	
	/**
	 * 获取当前APP的版本号
	 * 
	 * @return
	 */
	public static String getVersion(Context context) {
		PackageManager pm = context.getPackageManager();
		try {
			PackageInfo packageInfo = pm.getPackageInfo(
					context.getPackageName(), 0);
			return packageInfo.versionName;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	/**
	 * 获取手机的唯一标识
	 * @param context
	 * @return
	 */
	public static String getDeviceId(Context context){
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		return tm.getDeviceId();
	}

	/**
	 * 根据系统时间计算时间差
	 * 
	 * @param mss
	 * @return
	 */
	public static long formatDuring(long time) {
		long mss = System.currentTimeMillis() - time;
		long days = mss / (1000 * 60 * 60 * 24);
		// long hours = (mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
		// long minutes = (mss % (1000 * 60 * 60)) / (1000 * 60);
		// long seconds = (mss % (1000 * 60)) / 1000;
		return days;
	}
	
	/**
	 * 格式化毫秒时间
	 * @param mss
	 * @return
	 */
	public static String formatTimeDate(long mss) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(mss);
		SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd",Locale.CHINA);
		String time = from.format(calendar.getTime());
		return time;
	}
	
	/** 
     * 获取裁剪后的圆形图片 
     *  
     * @param radius 半径 
     */  
    public static Bitmap getCroppedRoundBitmap(Bitmap bmp, int radius) {  
        Bitmap scaledSrcBmp;  
        int diameter = radius * 2;  
  
        // 为了防止宽高不相等,造成圆形图片变形,因此截取长方形中处于中间位置最大的正方形图片  
        int bmpWidth = bmp.getWidth();  
        int bmpHeight = bmp.getHeight();  
        int squareWidth = 0, squareHeight = 0;  
        int x = 0, y = 0;  
        Bitmap squareBitmap;  
        if (bmpHeight > bmpWidth) {// 高大于宽  
            squareWidth = squareHeight = bmpWidth;  
            x = 0;  
            y = (bmpHeight - bmpWidth) / 2;  
            // 截取正方形图片  
            squareBitmap = Bitmap.createBitmap(bmp, x, y, squareWidth,  
                    squareHeight);  
        } else if (bmpHeight < bmpWidth) {// 宽大于高  
            squareWidth = squareHeight = bmpHeight;  
            x = (bmpWidth - bmpHeight) / 2;  
            y = 0;  
            squareBitmap = Bitmap.createBitmap(bmp, x, y, squareWidth,  
                    squareHeight);  
        } else {  
            squareBitmap = bmp;  
        }  
  
        if (squareBitmap.getWidth() != diameter  
                || squareBitmap.getHeight() != diameter) {  
            scaledSrcBmp = Bitmap.createScaledBitmap(squareBitmap, diameter,  
                    diameter, true);  
  
        } else {  
            scaledSrcBmp = squareBitmap;  
        }  
        Bitmap output = Bitmap.createBitmap(scaledSrcBmp.getWidth(),  
                scaledSrcBmp.getHeight(), Config.ARGB_8888);  
        Canvas canvas = new Canvas(output);  
  
        Paint paint = new Paint();  
        Rect rect = new Rect(0, 0, scaledSrcBmp.getWidth(),  
                scaledSrcBmp.getHeight());  
  
        paint.setAntiAlias(true);  
        paint.setFilterBitmap(true);  
        paint.setDither(true);  
        canvas.drawARGB(0, 0, 0, 0);  
        canvas.drawCircle(scaledSrcBmp.getWidth() / 2,  
                scaledSrcBmp.getHeight() / 2, scaledSrcBmp.getWidth() / 2,  
                paint);  
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
        canvas.drawBitmap(scaledSrcBmp, rect, rect, paint); 
        bmp = null;  
        squareBitmap = null;  
        scaledSrcBmp = null;  
        return output;  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值