UiUtils.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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.math.BigDecimal;
  18. import java.text.ParseException;
  19. import java.text.SimpleDateFormat;
  20. import java.util.Date;
  21. import java.util.regex.Matcher;
  22. import java.util.regex.Pattern;
  23. /**
  24. * Description:
  25. * Copyright : Copyright (c) 2019
  26. * Company : 大雅乐盟
  27. * Author : r
  28. * Date : 2019/8/22 15:08
  29. */
  30. public class UiUtils {
  31. private final static Handler mainHand = new Handler(Looper.getMainLooper());
  32. public static void postDelayed(Runnable r, long delay) {
  33. mainHand.postDelayed(r, delay);
  34. }
  35. public static void setMargins(View v, int l, int t, int r, int b) {
  36. if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
  37. ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
  38. p.setMargins(l, t, r, b);
  39. v.requestLayout();
  40. }
  41. }
  42. public static SpannableString matcherSearchText(Context context, String text, int keyword, int color) {
  43. String key = keyword + "";
  44. SpannableString ss = new SpannableString(text);
  45. Pattern pattern = Pattern.compile(key);
  46. Matcher matcher = pattern.matcher(ss);
  47. while (matcher.find()) {
  48. int start = matcher.start();
  49. int end = matcher.end();
  50. ss.setSpan(new TextAppearanceSpan(context, color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//new ForegroundColorSpan(color)
  51. }
  52. return ss;
  53. }
  54. public static String formateTime(String dateString, String format) {
  55. if (TextUtils.isEmpty(dateString)) return "";
  56. try {
  57. Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
  58. String ds = new SimpleDateFormat(format).format(date);
  59. return ds;
  60. } catch (ParseException e) {
  61. return "";
  62. }
  63. }
  64. public static String formateHourTime(String dateString, String format) {
  65. if (TextUtils.isEmpty(dateString)) return "";
  66. try {
  67. Date date = new SimpleDateFormat("HH:mm:ss").parse(dateString);
  68. String ds = new SimpleDateFormat(format).format(date);
  69. return ds;
  70. } catch (ParseException e) {
  71. return "";
  72. }
  73. }
  74. // 两次点击按钮之间的点击间隔不能少于1000毫秒
  75. private static final int MIN_CLICK_DELAY_TIME = 1000;
  76. private static long lastClickTime;
  77. public static boolean isFastClick() {
  78. boolean flag = false;
  79. long curClickTime = System.currentTimeMillis();
  80. if ((curClickTime - lastClickTime) < MIN_CLICK_DELAY_TIME) {
  81. flag = true;
  82. }
  83. lastClickTime = curClickTime;
  84. return flag;
  85. }
  86. public static int getMaxHeightAtRatio16_9(Context context) {
  87. float ratio = 16 / 9f;
  88. return getMaxHeightAtAspectRatio(context, ratio);
  89. }
  90. public static int getHeightAtRatio16_9(Context context, float width) {
  91. float ratio = 16 / 9f;
  92. return (int) (width / ratio);
  93. }
  94. public static int getMaxHeightAtAspectRatio(Context context, float ratio) {
  95. DisplayMetrics deviceSize = DeviceUtil.getDeviceSize(context);
  96. if (deviceSize != null) {
  97. int width = deviceSize.widthPixels;
  98. return (int) (width / ratio);
  99. }
  100. return 0;
  101. }
  102. public static SpannableString diffColorString(String bigSizeStr, String centerStr, String lastStr, int firstColor, int centerColor) {
  103. String tmpStr = bigSizeStr + centerStr + lastStr;
  104. SpannableString result = new SpannableString(tmpStr);
  105. try {
  106. result.setSpan(new ForegroundColorSpan(firstColor), 0, bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  107. result.setSpan(new ForegroundColorSpan(centerColor), bigSizeStr.length(), bigSizeStr.length() + centerStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  108. result.setSpan(new ForegroundColorSpan(firstColor), bigSizeStr.length() + centerStr.length(), tmpStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  109. } catch (Exception e) {
  110. e.printStackTrace();
  111. }
  112. return result;
  113. }
  114. public static SpannableString diffColorString(String bigSizeStr, String lastStr, int firstColor, int lastColor) {
  115. String tmpStr = bigSizeStr + lastStr;
  116. SpannableString result = new SpannableString(tmpStr);
  117. try {
  118. result.setSpan(new ForegroundColorSpan(firstColor), 0, bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  119. result.setSpan(new ForegroundColorSpan(lastColor), bigSizeStr.length(), tmpStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  120. } catch (Exception e) {
  121. e.printStackTrace();
  122. }
  123. return result;
  124. }
  125. public static SpannableString diffColorString(String bigSizeStr, String lastStr, int firstColor, int lastColor, Drawable iconDrawable) {
  126. String tmpStr = bigSizeStr + lastStr;
  127. try {
  128. String icon = "[icon]";
  129. SpannableString result = new SpannableString("[icon]" + tmpStr);
  130. if (iconDrawable != null) {
  131. iconDrawable.setBounds(0, 0, iconDrawable.getIntrinsicWidth(), iconDrawable.getIntrinsicHeight());
  132. }
  133. ImageSpan alignMiddleImageSpan = new QMUIAlignMiddleImageSpan(iconDrawable, QMUIAlignMiddleImageSpan.ALIGN_MIDDLE, 4);
  134. result.setSpan(alignMiddleImageSpan, 0, icon.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  135. result.setSpan(new ForegroundColorSpan(firstColor), icon.length(), icon.length() + bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  136. result.setSpan(new ForegroundColorSpan(lastColor), icon.length() + bigSizeStr.length(), result.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  137. return result;
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. SpannableString spannableString = new SpannableString(tmpStr);
  141. return spannableString;
  142. }
  143. }
  144. public static String[] splitSubjectName(String subjectName) {
  145. if (TextUtils.isEmpty(subjectName)) {
  146. return null;
  147. }
  148. String[] split = subjectName.split(",");
  149. return split;
  150. }
  151. /**
  152. * 保留2位小数
  153. *
  154. * @param targetValue
  155. * @return
  156. */
  157. public static String convertDouble(double targetValue) {
  158. BigDecimal bd = new BigDecimal(targetValue);
  159. double result = bd.setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); // 保留两位小数,不四舍五入(可选舍入模式)
  160. return String.valueOf(result);
  161. }
  162. public static String getCourseTimeString(String start, String end) {
  163. if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
  164. return "";
  165. }
  166. if (TextUtils.isEmpty(start) && !TextUtils.isEmpty(end)) {
  167. return TimeUtils.date2String(TimeUtils.getDate(start), "yyyy-MM-dd HH:mm");
  168. }
  169. if (!TextUtils.isEmpty(start) && TextUtils.isEmpty(end)) {
  170. return TimeUtils.date2String(TimeUtils.getDate(end), "yyyy-MM-dd HH:mm");
  171. }
  172. String time = "";
  173. String startTime = TimeUtils.date2String(TimeUtils.getDate(start), "yyyy-MM-dd");
  174. String endTime = TimeUtils.date2String(TimeUtils.getDate(end), "yyyy-MM-dd");
  175. String startTimeText = TimeUtils.date2String(TimeUtils.getDate(start), "HH:mm");
  176. String endTimeText = TimeUtils.date2String(TimeUtils.getDate(end), "HH:mm");
  177. if (TextUtils.equals(startTime, endTime)) {
  178. time = startTime + " " + startTimeText + "-" + endTimeText;
  179. } else {
  180. time = startTime + " " + startTimeText + "-" + endTime + " " + endTimeText;
  181. }
  182. return time;
  183. }
  184. public static String getPianoCourseName(String courseTitle, int classNum) {
  185. if (classNum != 0) {
  186. return courseTitle + "第" + classNum + "课";
  187. } else {
  188. return courseTitle;
  189. }
  190. }
  191. }