因为BasePopup主体是个抽象类,因此很多时候我们想展示一个简单的Popup都不得不新建一个依赖BasePopup的类。
这样的问题是造成了大量的冗余代码,为此BasePopup提供了QuickPopupBuilder来改善这一情况。
QuickPopupBuilder支持链式调用生成一个基于QuickPopup的PopupWindow,该Builder旨在快速建立一个简单的不包含复杂逻辑的PopupWindow(如单纯的弹出一个显示文本用的Popup),避免过于简单的PopupWindow也要继承BasePopupWindow,导致存在过多的类。
QuickPopupBuilder.with(getContext())
.contentView(R.layout.popup_normal)
.config(new QuickPopupConfig()
.gravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL)
.withClick(R.id.tx_1, new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "clicked", Toast.LENGTH_LONG).show();
}
}))
.show();
//.show(anchorView);
注意:默认QuickPopupBuilder.QuickPopupConfig配置中PopupWindow动画为缩放弹出和消失
开发者的话
我们留意到一些关于QuickPopupBuilder的提问以及功能性建议,绝大多数都是希望QuickPopupBuilder增加各种各样的功能。
但是,QuickPopupBuilder的开发初衷其实是对于单纯展示类的Popup可以通过链式调用快速开发,而不希望包含各种各样的功能。
更深层的想法则是希望给大家展示一种基于BasePopup框架下的拓展,旨在开发者可以在本框架下封装出各种各样的适合自己的api,就如RecyclerView的Adapter一样,被大家玩出了花。
因此
我们不提倡QuickPopupBuilder作为您日常使用的弹窗,不要为了链式而链式。