UiUtils.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.cooleshow.base.utils;
  2. import android.content.Context;
  3. import android.graphics.drawable.Drawable;
  4. import android.os.Handler;
  5. import android.os.Looper;
  6. import android.text.Spannable;
  7. import android.text.SpannableString;
  8. import android.text.Spanned;
  9. import android.text.TextUtils;
  10. import android.text.style.ForegroundColorSpan;
  11. import android.text.style.ImageSpan;
  12. import android.text.style.TextAppearanceSpan;
  13. import android.util.DisplayMetrics;
  14. import android.view.View;
  15. import android.view.ViewGroup;
  16. import com.cooleshow.base.widgets.span.QMUIAlignMiddleImageSpan;
  17. import java.text.ParseException;
  18. import java.text.SimpleDateFormat;
  19. import java.util.Date;
  20. import java.util.regex.Matcher;
  21. import java.util.regex.Pattern;
  22. /**
  23. * Description:
  24. * Copyright : Copyright (c) 2019
  25. * Company : 大雅乐盟
  26. * Author : r
  27. * Date : 2019/8/22 15:08
  28. */
  29. public class UiUtils {
  30. private final static Handler mainHand = new Handler(Looper.getMainLooper());
  31. public static void postDelayed(Runnable r, long delay) {
  32. mainHand.postDelayed(r, delay);
  33. }
  34. public static void setMargins(View v, int l, int t, int r, int b) {
  35. if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
  36. ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
  37. p.setMargins(l, t, r, b);
  38. v.requestLayout();
  39. }
  40. }
  41. public static SpannableString matcherSearchText(Context context, String text, int keyword, int color) {
  42. String key = keyword + "";
  43. SpannableString ss = new SpannableString(text);
  44. Pattern pattern = Pattern.compile(key);
  45. Matcher matcher = pattern.matcher(ss);
  46. while (matcher.find()) {
  47. int start = matcher.start();
  48. int end = matcher.end();
  49. ss.setSpan(new TextAppearanceSpan(context, color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//new ForegroundColorSpan(color)
  50. }
  51. return ss;
  52. }
  53. public static String formateTime(String dateString, String format) {
  54. if (TextUtils.isEmpty(dateString)) return "";
  55. try {
  56. Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
  57. String ds = new SimpleDateFormat(format).format(date);
  58. return ds;
  59. } catch (ParseException e) {
  60. return "";
  61. }
  62. }
  63. public static String formateHourTime(String dateString, String format) {
  64. if (TextUtils.isEmpty(dateString)) return "";
  65. try {
  66. Date date = new SimpleDateFormat("HH:mm:ss").parse(dateString);
  67. String ds = new SimpleDateFormat(format).format(date);
  68. return ds;
  69. } catch (ParseException e) {
  70. return "";
  71. }
  72. }
  73. // 两次点击按钮之间的点击间隔不能少于1000毫秒
  74. private static final int MIN_CLICK_DELAY_TIME = 1000;
  75. private static long lastClickTime;
  76. public static boolean isFastClick() {
  77. boolean flag = false;
  78. long curClickTime = System.currentTimeMillis();
  79. if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
  80. flag = true;
  81. }
  82. lastClickTime = curClickTime;
  83. return flag;
  84. }
  85. public static int getMaxHeightAtRatio16_9(Context context) {
  86. float ratio = 16 / 9f;
  87. return getMaxHeightAtAspectRatio(context, ratio);
  88. }
  89. public static int getMaxHeightAtAspectRatio(Context context, float ratio) {
  90. DisplayMetrics deviceSize = DeviceUtil.getDeviceSize(context);
  91. if (deviceSize != null) {
  92. int width = deviceSize.widthPixels;
  93. return (int) (width / ratio);
  94. }
  95. return 0;
  96. }
  97. public static SpannableString diffColorString(String bigSizeStr, String centerStr, String lastStr, int firstColor, int centerColor) {
  98. String tmpStr = bigSizeStr + centerStr + lastStr;
  99. SpannableString result = new SpannableString(tmpStr);
  100. try{
  101. result.setSpan(new ForegroundColorSpan(firstColor), 0, bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  102. result.setSpan(new ForegroundColorSpan(centerColor), bigSizeStr.length(), bigSizeStr.length() + centerStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  103. result.setSpan(new ForegroundColorSpan(firstColor), bigSizeStr.length() + centerStr.length(), tmpStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  104. }catch (Exception e){
  105. e.printStackTrace();
  106. }
  107. return result;
  108. }
  109. public static SpannableString diffColorString(String bigSizeStr, String lastStr, int firstColor, int lastColor) {
  110. String tmpStr = bigSizeStr + lastStr;
  111. SpannableString result = new SpannableString(tmpStr);
  112. try {
  113. result.setSpan(new ForegroundColorSpan(firstColor), 0, bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  114. result.setSpan(new ForegroundColorSpan(lastColor), bigSizeStr.length(), tmpStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  115. } catch (Exception e) {
  116. e.printStackTrace();
  117. }
  118. return result;
  119. }
  120. public static SpannableString diffColorString(String bigSizeStr, String lastStr, int firstColor, int lastColor, Drawable iconDrawable) {
  121. String tmpStr = bigSizeStr + lastStr;
  122. try {
  123. String icon = "[icon]";
  124. SpannableString result = new SpannableString("[icon]" + tmpStr);
  125. if (iconDrawable != null) {
  126. iconDrawable.setBounds(0, 0, iconDrawable.getIntrinsicWidth(), iconDrawable.getIntrinsicHeight());
  127. }
  128. ImageSpan alignMiddleImageSpan = new QMUIAlignMiddleImageSpan(iconDrawable, QMUIAlignMiddleImageSpan.ALIGN_MIDDLE, 4);
  129. result.setSpan(alignMiddleImageSpan, 0, icon.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  130. result.setSpan(new ForegroundColorSpan(firstColor), icon.length(), icon.length() + bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  131. result.setSpan(new ForegroundColorSpan(lastColor), icon.length() + bigSizeStr.length(), result.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  132. return result;
  133. } catch (Exception e) {
  134. e.printStackTrace();
  135. SpannableString spannableString = new SpannableString(tmpStr);
  136. return spannableString;
  137. }
  138. }
  139. }