简单的吐司工具类,更方便使用吐司,同时防止重复出现。

api

工具类和扩展工具方法名完全一致。

  1. toastShort :吐司短时间
  2. toastLong :吐司长时间
  3. toast :吐司自定义时间

源码

  1. class ToastUtils private constructor() {
  2. private var toast: Toast? = null
  3. companion object {
  4. val instance = ToastSingle.holder
  5. }
  6. private object ToastSingle {
  7. val holder = ToastUtils()
  8. }
  9. fun toastShort(context: Context?, @StringRes text: Int) {
  10. if (context == null) return
  11. toastShort(context, context.getResource().getString(text))
  12. }
  13. fun toastShort(context: Context?, text: CharSequence?) {
  14. toast(context, text, Toast.LENGTH_SHORT)
  15. }
  16. fun toastLong(context: Context?, @StringRes text: Int) {
  17. if (context == null) return
  18. toastShort(context, context.getResource().getString(text))
  19. }
  20. fun toastLong(context: Context?, text: CharSequence?) {
  21. toast(context, text, Toast.LENGTH_LONG)
  22. }
  23. /**
  24. * 通用吐司
  25. *
  26. * @param context
  27. * @param text 吐司文本
  28. * @param duration 持续时间
  29. */
  30. fun toast(context: Context?, text: CharSequence?, duration: Int) {
  31. if (context == null || text.isNullOrEmpty()) return
  32. if (toast == null) {
  33. toast = Toast.makeText(context, text, duration)
  34. toast?.show()
  35. } else {
  36. toast?.setText(text)
  37. toast?.duration = duration
  38. toast?.show()
  39. }
  40. }
  41. fun cancel() {
  42. toast?.cancel()
  43. }
  44. }