记录下本人在开发中常用到的工具类。。。
页面跳转工具类
log打印工具类
MD5加密
SHA1加密
吐司工具类
import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; /** * 类描述:Activity之间的跳转工具类 * 创建人:Lee·Li * 修改备注: */ public class JumperUtils { public static void JumpTo(Context context, Class<?> cls) { try { Intent intent = new Intent(context, cls); context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } public static void JumpTo(Context context, Class<?> cls, int flag) { try { Intent intent = new Intent(context, cls); intent.setFlags(flag); context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } public static void JumpTo(Context context, Class<?> cls, Bundle bundle) { try { Intent intent = new Intent(context, cls); intent.putExtras(bundle); context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } public static void JumpTo(Context context, Class<?> cls, Bundle bundle, int flag) { try { Intent intent = new Intent(context, cls); intent.putExtras(bundle); intent.setFlags(flag); context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } public static void JumpToForResult(Activity activity, Class<?> cls, int requestCode) { try { Intent intent = new Intent(activity, cls); activity.startActivityForResult(intent, requestCode); } catch (Exception e) { e.printStackTrace(); } } public static void JumpToForResult(Activity activity, Class<?> cls, int requestCode, Bundle bundle) { try { Intent intent = new Intent(activity, cls); intent.putExtras(bundle); activity.startActivityForResult(intent, requestCode); } catch (Exception e) { e.printStackTrace(); } } public static void JumpToForResult(Fragment activity, Class<?> cls, int requestCode) { try { Intent intent = new Intent(activity.getActivity(), cls); activity.startActivityForResult(intent, requestCode); } catch (Exception e) { e.printStackTrace(); } } public static void JumpToForResult(Fragment activity, Class<?> cls, int requestCode, Bundle bundle) { try { Intent intent = new Intent(activity.getActivity(), cls); intent.putExtras(bundle); activity.startActivityForResult(intent, requestCode); } catch (Exception e) { e.printStackTrace(); } } public static void JumpTo(Context context, String url) { try { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } }
log打印工具类
import android.util.Log; public class LogUtils { public static final boolean CESHI = true; public static final String tag = "com.qmall.aninterest"; public LogUtils() { } public static void e(String tag, Object msg) { if (null != msg) { Log.e("com.qmall.aninterest", tag + ":" + msg.toString()); } } public static void i(String tag, Object msg) { if (null != msg) { Log.i("com.qmall.aninterest", tag + ":" + msg.toString()); } } public static void d(String tag, Object msg) { if (null != msg) { Log.d("com.qmall.aninterest", tag + ":" + msg.toString()); } } public static void v(String tag, Object msg) { if (null != msg) { Log.v("com.qmall.aninterest", tag + ":" + msg.toString()); } } public static void err(String tag, String msg, Throwable throwable) { if (null != msg) { Log.e("com.qmall.aninterest", msg, throwable); } } }
MD5加密工具类
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { //1102130405061708 private static String key = "a6U&1$Ip[Jr/sed]Rfvn=O>Mz+}lXN*%-gLcGD|0"; //MD5加密实例 public static String getMD5(String str) throws NoSuchAlgorithmException { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { e.printStackTrace(); return ""; } char[] charArray = str.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) { byteArray[i] = (byte) charArray[i]; } byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) { hexValue.append("0"); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) { hs = hs + "0" + stmp; } else { hs = hs + stmp; } } return hs; } //SHA1 加密实例 public static String encryptToSHA(String info) { byte[] digesta = null; try { // 得到一个SHA-1的消息摘要 MessageDigest alga = MessageDigest.getInstance("SHA-1"); // 添加要进行计算摘要的信息 alga.update(info.getBytes()); // 得到该摘要 digesta = alga.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 将摘要转为字符串 String rs = byte2hex(digesta); return rs + key; } }
SHA1加密工具类
import java.security.MessageDigest; public class SHA1 { public static String getSHA1HexString(String str) throws Exception { // SHA1签名生成 MessageDigest md = MessageDigest.getInstance("SHA-1"); md.update(str.getBytes()); byte[] digest = md.digest(); StringBuffer hexstr = new StringBuffer(); String shaHex = ""; for (int i = 0; i < digest.length; i++) { shaHex = Integer.toHexString(digest[i] & 0xFF); if (shaHex.length() < 2) { hexstr.append(0); } hexstr.append(shaHex); } return hexstr.toString(); } private final int[] abcde = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 }; // 摘要数据存储数组 private int[] digestInt = new int[5]; // 计算过程中的临时数据存储数组 private int[] tmpData = new int[80]; // 计算sha-1摘要 private int process_input_bytes(byte[] bytedata) { // 初试化常量 System.arraycopy(abcde, 0, digestInt, 0, abcde.length); // 格式化输入字节数组,补10及长度数据 byte[] newbyte = byteArrayFormatData(bytedata); // 获取数据摘要计算的数据单元个数 int MCount = newbyte.length / 64; // 循环对每个数据单元进行摘要计算 for (int pos = 0; pos < MCount; pos++) { // 将每个单元的数据转换成16个整型数据,并保存到tmpData的前16个数组元素中 for (int j = 0; j < 16; j++) { tmpData[j] = byteArrayToInt(newbyte, (pos * 64) + (j * 4)); } // 摘要计算函数 encrypt(); } return 20; } // 格式化输入字节数组格式 private byte[] byteArrayFormatData(byte[] bytedata) { // 补0数量 int zeros = 0; // 补位后总位数 int size = 0; // 原始数据长度 int n = bytedata.length; // 模64后的剩余位数 int m = n % 64; // 计算添加0的个数以及添加10后的总长度 if (m < 56) { zeros = 55 - m; size = n - m + 64; } else if (m == 56) { zeros = 63; size = n + 8 + 64; } else { zeros = 63 - m + 56; size = (n + 64) - m + 64; } // 补位后生成的新数组内容 byte[] newbyte = new byte[size]; // 复制数组的前面部分 System.arraycopy(bytedata, 0, newbyte, 0, n); // 获得数组Append数据元素的位置 int l = n; // 补1操作 newbyte[l++] = (byte) 0x80; // 补0操作 for (int i = 0; i < zeros; i++) { newbyte[l++] = (byte) 0x00; } // 计算数据长度,补数据长度位共8字节,长整型 long N = (long) n * 8; byte h8 = (byte) (N & 0xFF); byte h7 = (byte) ((N >> 8) & 0xFF); byte h6 = (byte) ((N >> 16) & 0xFF); byte h5 = (byte) ((N >> 24) & 0xFF); byte h4 = (byte) ((N >> 32) & 0xFF); byte h3 = (byte) ((N >> 40) & 0xFF); byte h2 = (byte) ((N >> 48) & 0xFF); byte h1 = (byte) (N >> 56); newbyte[l++] = h1; newbyte[l++] = h2; newbyte[l++] = h3; newbyte[l++] = h4; newbyte[l++] = h5; newbyte[l++] = h6; newbyte[l++] = h7; newbyte[l++] = h8; return newbyte; } private int f1(int x, int y, int z) { return (x & y) | (~x & z); } private int f2(int x, int y, int z) { return x ^ y ^ z; } private int f3(int x, int y, int z) { return (x & y) | (x & z) | (y & z); } private int f4(int x, int y) { return (x << y) | x >>> (32 - y); } // 单元摘要计算函数 private void encrypt() { for (int i = 16; i <= 79; i++) { tmpData[i] = f4(tmpData[i - 3] ^ tmpData[i - 8] ^ tmpData[i - 14] ^ tmpData[i - 16], 1); } int[] tmpabcde = new int[5]; for (int i1 = 0; i1 < tmpabcde.length; i1++) { tmpabcde[i1] = digestInt[i1]; } for (int j = 0; j <= 19; j++) { int tmp = f4(tmpabcde[0], 5) + f1(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4] + tmpData[j] + 0x5a827999; tmpabcde[4] = tmpabcde[3]; tmpabcde[3] = tmpabcde[2]; tmpabcde[2] = f4(tmpabcde[1], 30); tmpabcde[1] = tmpabcde[0]; tmpabcde[0] = tmp; } for (int k = 20; k <= 39; k++) { int tmp = f4(tmpabcde[0], 5) + f2(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4] + tmpData[k] + 0x6ed9eba1; tmpabcde[4] = tmpabcde[3]; tmpabcde[3] = tmpabcde[2]; tmpabcde[2] = f4(tmpabcde[1], 30); tmpabcde[1] = tmpabcde[0]; tmpabcde[0] = tmp; } for (int l = 40; l <= 59; l++) { int tmp = f4(tmpabcde[0], 5) + f3(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4] + tmpData[l] + 0x8f1bbcdc; tmpabcde[4] = tmpabcde[3]; tmpabcde[3] = tmpabcde[2]; tmpabcde[2] = f4(tmpabcde[1], 30); tmpabcde[1] = tmpabcde[0]; tmpabcde[0] = tmp; } for (int m = 60; m <= 79; m++) { int tmp = f4(tmpabcde[0], 5) + f2(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4] + tmpData[m] + 0xca62c1d6; tmpabcde[4] = tmpabcde[3]; tmpabcde[3] = tmpabcde[2]; tmpabcde[2] = f4(tmpabcde[1], 30); tmpabcde[1] = tmpabcde[0]; tmpabcde[0] = tmp; } for (int i2 = 0; i2 < tmpabcde.length; i2++) { digestInt[i2] = digestInt[i2] + tmpabcde[i2]; } for (int n = 0; n < tmpData.length; n++) { tmpData[n] = 0; } } // 4字节数组转换为整数 private int byteArrayToInt(byte[] bytedata, int i) { return ((bytedata[i] & 0xff) << 24) | ((bytedata[i + 1] & 0xff) << 16) | ((bytedata[i + 2] & 0xff) << 8) | (bytedata[i + 3] & 0xff); } // 整数转换为4字节数组 private void intToByteArray(int intValue, byte[] byteData, int i) { byteData[i] = (byte) (intValue >>> 24); byteData[i + 1] = (byte) (intValue >>> 16); byteData[i + 2] = (byte) (intValue >>> 8); byteData[i + 3] = (byte) intValue; } // 将字节转换为十六进制字符串 private static String byteToHexString(byte ib) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] ob = new char[2]; ob[0] = Digit[(ib >>> 4) & 0X0F]; ob[1] = Digit[ib & 0X0F]; String s = new String(ob); return s; } // 将字节数组转换为十六进制字符串 private static String byteArrayToHexString(byte[] bytearray) { String strDigest = ""; for (int i = 0; i < bytearray.length; i++) { strDigest += byteToHexString(bytearray[i]); } return strDigest; } // 计算sha-1摘要,返回相应的字节数组 public byte[] getDigestOfBytes(byte[] byteData) { process_input_bytes(byteData); byte[] digest = new byte[20]; for (int i = 0; i < digestInt.length; i++) { intToByteArray(digestInt[i], digest, i * 4); } return digest; } // 计算sha-1摘要,返回相应的十六进制字符串 public String getDigestOfString(byte[] byteData) { return byteArrayToHexString(getDigestOfBytes(byteData)); } /**/ public static void main(String[] args) { String data = "lvbaolin"; System.out.println(data); String digest = new SHA1().getDigestOfString(data.getBytes()); System.out.println(digest); // System.out.println( ToMD5.convertSHA1(data).toUpperCase()); } }
吐司工具类
import android.content.Context; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class ToastUtil { private static boolean isShow = true;//默认显示 private static Toast mToast = null;//全局唯一的Toast /*private控制不应该被实例化*/ private ToastUtil() { throw new UnsupportedOperationException("不能被实例化"); } /** * 全局控制是否显示Toast * @param isShowToast */ public static void controlShow(boolean isShowToast){ isShow = isShowToast; } /** * 取消Toast显示 */ public void cancelToast() { if(isShow && mToast != null){ mToast.cancel(); } } /** * 短时间显示Toast * * @param context * @param message */ public static void showShort(Context context, CharSequence message) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, Toast.LENGTH_SHORT); } else { mToast.setText(message); } mToast.show(); } } /** * 短时间显示Toast * * @param context * @param resId 资源ID:getResources().getString(R.string.xxxxxx); */ public static void showShort(Context context, int resId) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, resId, Toast.LENGTH_SHORT); } else { mToast.setText(resId); } mToast.show(); } } /** * 长时间显示Toast * * @param context * @param message */ public static void showLong(Context context, CharSequence message) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, Toast.LENGTH_LONG); } else { mToast.setText(message); } mToast.show(); } } /** * 长时间显示Toast * * @param context * @param resId 资源ID:getResources().getString(R.string.xxxxxx); */ public static void showLong(Context context, int resId) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, resId, Toast.LENGTH_LONG); } else { mToast.setText(resId); } mToast.show(); } } /** * 自定义显示Toast时间 * * @param context * @param message * @param duration 单位:毫秒 */ public static void show(Context context, CharSequence message, int duration) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, duration); } else { mToast.setText(message); } mToast.show(); } } /** * 自定义显示Toast时间 * * @param context * @param resId 资源ID:getResources().getString(R.string.xxxxxx); * @param duration 单位:毫秒 */ public static void show(Context context, int resId, int duration) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, resId, duration); } else { mToast.setText(resId); } mToast.show(); } } /** * 自定义Toast的View * @param context * @param message * @param duration 单位:毫秒 * @param view 显示自己的View */ public static void customToastView(Context context, CharSequence message, int duration,View view) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, duration); } else { mToast.setText(message); } if(view != null){ mToast.setView(view); } mToast.show(); } } /** * 自定义Toast的位置 * @param context * @param message * @param duration 单位:毫秒 * @param gravity * @param xOffset * @param yOffset */ public static void customToastGravity(Context context, CharSequence message, int duration,int gravity, int xOffset, int yOffset) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, duration); } else { mToast.setText(message); } mToast.setGravity(gravity, xOffset, yOffset); mToast.show(); } } /** * 自定义带图片和文字的Toast,最终的效果就是上面是图片,下面是文字 * @param context * @param message * @param iconResId 图片的资源id,如:R.drawable.icon * @param duration * @param gravity * @param xOffset * @param yOffset */ public static void showToastWithImageAndText(Context context, CharSequence message, int iconResId,int duration,int gravity, int xOffset, int yOffset) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, duration); } else { mToast.setText(message); } mToast.setGravity(gravity, xOffset, yOffset); LinearLayout toastView = (LinearLayout) mToast.getView(); ImageView imageView = new ImageView(context); imageView.setImageResource(iconResId); toastView.addView(imageView, 0); mToast.show(); } } /** * 自定义Toast,针对类型CharSequence * @param context * @param message * @param duration * @param view * @param isGravity true,表示后面的三个布局参数生效,false,表示不生效 * @param gravity * @param xOffset * @param yOffset * @param isMargin true,表示后面的两个参数生效,false,表示不生效 * @param horizontalMargin * @param verticalMargin */ public static void customToastAll(Context context, CharSequence message, int duration,View view,boolean isGravity,int gravity, int xOffset, int yOffset,boolean isMargin,float horizontalMargin, float verticalMargin) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, message, duration); } else { mToast.setText(message); } if(view != null){ mToast.setView(view); } if(isMargin){ mToast.setMargin(horizontalMargin, verticalMargin); } if(isGravity){ mToast.setGravity(gravity, xOffset, yOffset); } mToast.show(); } } /** * 自定义Toast,针对类型resId * @param context * @param resId * @param duration * @param view :应该是一个布局,布局中包含了自己设置好的内容 * @param isGravity true,表示后面的三个布局参数生效,false,表示不生效 * @param gravity * @param xOffset * @param yOffset * @param isMargin true,表示后面的两个参数生效,false,表示不生效 * @param horizontalMargin * @param verticalMargin */ public static void customToastAll(Context context, int resId, int duration,View view,boolean isGravity,int gravity, int xOffset, int yOffset,boolean isMargin,float horizontalMargin, float verticalMargin) { if (isShow){ if (mToast == null) { mToast = Toast.makeText(context, resId, duration); } else { mToast.setText(resId); } if(view != null){ mToast.setView(view); } if(isMargin){ mToast.setMargin(horizontalMargin, verticalMargin); } if(isGravity){ mToast.setGravity(gravity, xOffset, yOffset); } mToast.show(); } } }
谁有更好的工具类。可以联系我。一起交流。让开发变得简而易简---