SimplexToast.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package me.yoqi.android.utils;
  2. import android.content.Context;
  3. import android.view.Gravity;
  4. import android.widget.Toast;
  5. /**
  6. * 以后请用这个吐司,谢谢!!!
  7. * <p>
  8. * <p>
  9. * {@link Toast}的创建都是要inflate一个layout, findViewById之类的
  10. * 将一个吐司单例化,并且作防止频繁点击的处理。
  11. * <p>
  12. * <p>
  13. */
  14. @SuppressWarnings("all")
  15. public class SimplexToast {
  16. private static Toast mToast;
  17. private static long nextTimeMillis;
  18. private static int yOffset;
  19. static Context mContext;
  20. private static SimplexToast simplexToast;
  21. public synchronized static SimplexToast getInstance(Context context) {
  22. if (simplexToast == null) {
  23. simplexToast = new SimplexToast(context);
  24. }
  25. return simplexToast;
  26. }
  27. public SimplexToast(Context context) {
  28. mContext = context;
  29. }
  30. public static Toast init(Context context) {
  31. if (context == null) {
  32. throw new IllegalArgumentException("Context should not be null!!!");
  33. }
  34. if (mToast == null) {
  35. mToast = Toast.makeText(context, null, Toast.LENGTH_SHORT);
  36. yOffset = mToast.getYOffset();
  37. }
  38. mToast.setDuration(Toast.LENGTH_SHORT);
  39. mToast.setGravity(Gravity.BOTTOM, 0, yOffset);
  40. mToast.setMargin(0, 0);
  41. return mToast;
  42. }
  43. public static void show(String content) {
  44. show(content, Toast.LENGTH_SHORT);
  45. }
  46. public static void show(String content, int duration) {
  47. show(mContext, content, Gravity.BOTTOM, duration);
  48. }
  49. public static void show(Context context, int rid) {
  50. show(context, context.getResources().getString(rid));
  51. }
  52. public static void show(Context context, String content) {
  53. show(context, content, Gravity.BOTTOM);
  54. }
  55. public static void show(Context context, String content, int gravity) {
  56. show(context, content, gravity, Toast.LENGTH_SHORT);
  57. }
  58. public static void show(Context context, String content, int gravity, int duration) {
  59. long current = System.currentTimeMillis();
  60. //if (current < nextTimeMillis) return;
  61. if (mToast == null) init(context.getApplicationContext());
  62. mToast.setText(content);
  63. mToast.setDuration(duration);
  64. mToast.setGravity(gravity, 0, yOffset);
  65. nextTimeMillis = current + (duration == Toast.LENGTH_LONG ? 3500 : 2000);
  66. mToast.show();
  67. }
  68. }