Skip to content

Latest commit

 

History

History
59 lines (50 loc) · 2.18 KB

README.md

File metadata and controls

59 lines (50 loc) · 2.18 KB

ToastCompat

欢迎各位提出改进意见及完善,欢迎star.

  • 做这个的出发点是不管是测试还是本身的项目需求,需要搞一个toast,满足各式各样的需要,大概有这些,于是就有写了
  • 有需求的单列的toast
  • 有需求可以自定义弹出时间的toast
  • 有需求在关闭系统的通知权限后照样可以弹出toast
  • 有需求可以弹出自定义view
  • 参考资料

    • 参考toast的源码,系统维护是一个队列,同时也用到了aidl

    `

      public void show() {
    
      if (mNextView == null) {
          throw new RuntimeException("setView must have been called");
      }
      INotificationManager service = getService();
      String pkg = mContext.getOpPackageName();
      TN tn = mTN;
      tn.mNextView = mNextView;
    
      try {
          service.enqueueToast(pkg, tn, mDuration);
      } catch (RemoteException e) {
          // Empty
      }
    

    } `

  • 参考okhttp源码,以前没有太在意,后来发现,不管是okhttp中的builder还是dialog中的,他们的功能都是设置参数,这种思想非常好

  • 使用方法

    • 直接拷贝源码到项目中,简单暴力直接,有点重口味了,同时源码也不多。
    • 直接引入库
      compile 'com.gs:ToastCompat:1.0.0'

      具体调用api方法
      1.单列
      new CustomToast.Builder(this).setIsSingle(true).setText("你好").build() .show();
      2.自定义时间
      new CustomToast.Builder(this).setText("你好").setDuration(2000).build() .show();
      3.自定义View
      ImageView imageView = new ImageView(this); imageView.setImageResource(R.mipmap.ic_launcher); new CustomToast.Builder(this).setIsSingle(true).setView(imageView).setDuration(2000).build() .show();
      4.复合使用
      new CustomToast.Builder(this).setIsSingle(true).setText("你好").setDuration(2000).build() .show();

  • 效果展示

  • Thanks
    rongwu