因为BasePopup主体是个抽象类,因此很多时候我们想展示一个简单的Popup都不得不新建一个依赖BasePopup的类。
这样的问题是造成了大量的冗余代码,为此BasePopup提供了QuickPopupBuilder来改善这一情况。
QuickPopupBuilder支持链式调用生成一个基于QuickPopup的PopupWindow,该Builder旨在快速建立一个简单的不包含复杂逻辑的PopupWindow(如单纯的弹出一个显示文本用的Popup),避免过于简单的PopupWindow也要继承BasePopupWindow,导致存在过多的类。

  1. QuickPopupBuilder.with(getContext())
  2. .contentView(R.layout.popup_normal)
  3. .config(new QuickPopupConfig()
  4. .gravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL)
  5. .withClick(R.id.tx_1, new View.OnClickListener() {
  6. @Override
  7. public void onClick(View v) {
  8. Toast.makeText(getContext(), "clicked", Toast.LENGTH_LONG).show();
  9. }
  10. }))
  11. .show();
  12. //.show(anchorView);

注意:默认QuickPopupBuilder.QuickPopupConfig配置中PopupWindow动画为缩放弹出和消失

开发者的话

我们留意到一些关于QuickPopupBuilder的提问以及功能性建议,绝大多数都是希望QuickPopupBuilder增加各种各样的功能。
但是,QuickPopupBuilder的开发初衷其实是对于单纯展示类的Popup可以通过链式调用快速开发,而不希望包含各种各样的功能。

更深层的想法则是希望给大家展示一种基于BasePopup框架下的拓展,旨在开发者可以在本框架下封装出各种各样的适合自己的api,就如RecyclerView的Adapter一样,被大家玩出了花。
因此
我们不提倡QuickPopupBuilder作为您日常使用的弹窗,不要为了链式而链式。