在编写完xml之后,仅需简单的几步,便可完成BasePopup的构建。
新建继承BasePopupWindow的Java类
public class DemoPopup extends BasePopupWindow {
public DemoPopup(Context context) {
super(context);
}
}
设置xml或者指定的View
public class DemoPopup extends BasePopupWindow {
public DemoPopup(Context context) {
super(context);
setContentView(R.layout.popup_normal);
// 设置View,建议使用createPopupById(),使BasePopup能正确读取xml参数
// setContentView(createPopupById(R.layout.popup_normal));
}
}
展示BasePopup
最终展示非常简单,仅仅需要一行(其他高级用法请详见高级用法)。
不同的展示方法之间的区别
方法 |
描述 |
备注 |
showPopupWindow() |
调用该方法展示BasePopup将会以DecorView为参考对象,此时Gravity作用目标为宿主Window |
相当于FrameLayout的子控件的Gravity |
showPopupWindow(view) |
传入AnchorView,调用该方法展示BasePopup将会以传入的AnchorView为参考对象,此时Gravity作用目标为AnchorView。 |
如在AnchorView右方弹出,则只需要设置Gravity.Right,而不需要计算offset |
showPopupWindow(x,y) |
传入坐标信息,调用该方法展示BasePopup将会以传入的(x,y)坐标点为参考对象,此时Gravity作用目标为坐标点 |
如在某个点右方弹出,则只需要设置Gravity.Right,而不需要计算offset |
示例:
showPopupWindow() |
|
gravity = CENTER |
gravity = RIGHT | CENTER_VERTICAL |
 |
 |
showPopupWindow(View v) |
|
gravity = CENTER |
gravity = RIGHT | CENTER_VERTICAL |
 |
 |
showPopupWindow(int x, int y) |
gravity = CENTER |
 |