本文共 5738 字,大约阅读时间需要 19 分钟。
增加View测量宽高的方法:
public static void measureWidthAndHeight(View view) { int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(widthMeasureSpec, heightMeasureSpec);}
图片压缩需要谨慎处理:
public static Bitmap pressScaleCompress(Bitmap bitmap) { ByteArrayOutputStream os = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 80, os); byte[] bt = os.toByteArray(); Bitmap bitmap1 = BitmapFactory.decodeByteArray(bt, 0, bt.length); return bitmap1;}
width
和height
压缩方法:
public static Bitmap pressScaleWidthHeightCompress(Bitmap bitmap) { Matrix matrix = new Matrix(); matrix.postScale(0.6f, 0.6f); Bitmap bitmap1 = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return bitmap1;}
倒计时工具实现:
public class CountDownUtils extends BaseCountDownTimer { TextView tv; public CountDownUtils(long millisInFuture, long countDownInterval, TextView tv) { super(millisInFuture, countDownInterval); this.tv = tv; } @Override public void onTick(long millisUntilFinished) { tv.setEnabled(false); tv.setText("重新获取(" + millisUntilFinished / 1000 + "s)"); } @Override public void onFinish() { tv.setText("重新验证"); tv.setEnabled(true); }}
彻底清除缓存:
public static void clearAllCache(Context context) { deleteDir(context.getCacheDir()); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { deleteDir(context.getExternalCacheDir()); }}
deleteDir
方法实现:
private static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } return dir.delete();}
避免Double
精度问题:
public static double add(Double value1, Double value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.add(b2).doubleValue();}
图片URI
转File
:
public static String getRealPathFromUri(Context context, Uri uri) { int sdkVersion = Build.VERSION.SDK_INT; if (sdkVersion >= 19) { return getRealPathFromUriAboveApi19(context, uri); } else { return getRealPathFromUriBelowAPI19(context, uri); }}
getDataColumn
方法:
private static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { String path = null; String[] projection = {MediaStore.Images.Media.DATA}; Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null && cursor.moveToFirst()) { int columnIndex = cursor.getColumnIndexOrThrow(projection[0]); path = cursor.getString(columnIndex); } } catch (Exception e) { if (cursor != null) { cursor.close(); } } return path;}
高效网络请求工具:
public class RetrofitManager { private static final String BASE_URL = "http://yb.dashuibei.com/index.php/Home/"; private static RetrofitManager instance = null; private final Retrofit retrofit; private RetrofitManager(String baseUrl) { retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .client(buildOkHttpClient()) .build(); } public static RetrofitManager getDefault() { if (instance == null) { instance = new RetrofitManager(BASE_URL); } return instance; } private OkHttpClient buildOkHttpClient() { return new OkHttpClient.Builder() .readTimeout(5000, TimeUnit.MILLISECONDS) .writeTimeout(5000, TimeUnit.MILLISECONDS) .connectTimeout(5000, TimeUnit.MILLISECONDS) .build(); }}
时间工具类实现:
public static String getStandardDate(String timeStr) { long t = Long.parseLong(timeStr); long currentTime = System.currentTimeMillis() - t * 1000; StringBuilder sb = new StringBuilder(); long seconds = currentTime / 1000; long minutes = (currentTime / 1000) / 60; long hours = (currentTime / 1000) / 3600; long days = (currentTime / 1000) / 86400; if (days > 1) { sb.append(String.format("%d天", days)); } else if (hours > 24) { sb.append(String.format("1天")); } else if (hours > 0) { sb.append(String.format("%d小时", hours)); } else if (minutes > 0) { sb.append(String.format("%d分钟", minutes)); } else if (seconds > 0) { sb.append(String.format("%d秒", seconds)); } else { sb.append("刚刚"); } if (!sb.toString().equals("刚刚")) { sb.append("前"); } return sb.toString();}
关闭软键盘方法:
public static void closeKeyboard(Activity context) { ((InputMethodManager) context.getSystemService(context.INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(context.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}
Base64
图片转字符串:
public static String Bitmap2StrByBase64(Bitmap bit) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); bit.compress(Bitmap.CompressFormat.JPEG, 40, bos); byte[] bytes = bos.toByteArray(); return Base64.encodeToString(bytes, Base64.DEFAULT);}
欢迎加入技术交流群,共同探讨更多Android开发技巧!
转载地址:http://ctyoz.baihongyu.com/