SimplexToast.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package me.yoqi.android.open2share.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. private SimplexToast(Context context) {
  20. }
  21. public static Toast init(Context context) {
  22. if (context == null) {
  23. throw new IllegalArgumentException("Context should not be null!!!");
  24. }
  25. if (mToast == null) {
  26. mToast = Toast.makeText(context, null, Toast.LENGTH_SHORT);
  27. yOffset = mToast.getYOffset();
  28. }
  29. mToast.setDuration(Toast.LENGTH_SHORT);
  30. mToast.setGravity(Gravity.BOTTOM, 0, yOffset);
  31. mToast.setMargin(0, 0);
  32. return mToast;
  33. }
  34. public static void show(String content) {
  35. show(content, Toast.LENGTH_SHORT);
  36. }
  37. public static void show(String content, int duration) {
  38. show(null, content, Gravity.BOTTOM, duration);
  39. }
  40. public static void show(Context context, int rid) {
  41. show(context, context.getResources().getString(rid));
  42. }
  43. public static void show(Context context, String content) {
  44. show(context, content, Gravity.BOTTOM);
  45. }
  46. public static void show(Context context, String content, int gravity) {
  47. show(context, content, gravity, Toast.LENGTH_SHORT);
  48. }
  49. public static void show(Context context, String content, int gravity, int duration) {
  50. long current = System.currentTimeMillis();
  51. //if (current < nextTimeMillis) return;
  52. if (mToast == null) init(context.getApplicationContext());
  53. mToast.setText(content);
  54. mToast.setDuration(duration);
  55. mToast.setGravity(gravity, 0, yOffset);
  56. nextTimeMillis = current + (duration == Toast.LENGTH_LONG ? 3500 : 2000);
  57. mToast.show();
  58. }
  59. }