我们在项目中经常遇到要自己写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;
}
}