第三方插件Xpopup

这款第三方插件在github上相当有名,尤其是支持androidx之后,1.8版本之后整体都很稳定,能满足开发需求,但是因为自带的几个弹框都很丑,很长时间以来用的都是自定义,感觉比较繁琐而且没有必要,最近有时间拆解看看如何复用本来就提供的那些pop

  • 库组件修改
    1)Loading:LoadingPopupView getImplLayoutId
    使用layout为R.layout._xpopup_center_impl_loading
    框架是LinearLayout内部包含一个com.lxj.xpopup.widget.LoadingView和id为tv_title的TextView
    其中LoadingView是一个不能修改颜色"#CCCCCC-#333333",尺寸自适应的组件
    2)Confirm确认:ConfirmPopupView getImplLayoutId
    使用layout为R.layout._xpopup_center_impl_confirm
    框架是内部包含LinearLayout内部包含两个textView,一个EditView两个button
    tv_title和tv_content显示文字,et_input输入和执行操作,tv_cancel和tv_confirm执行
    3)单输入框带确认取消:InputConfirmPopupView
    使用layout与ConfirmPopupView相同,继承自ConfirmPopupView
    4)显示在中间的列表Popup:CenterListPopupView
    使用layout为_xpopup_center_impl_list,其内部控件为LinearLayout,包含一个TextView的title,和VerticalRecyclerView的recyclerView,缺点是使用的adapter为EasyAdapter,类型限定为String[]比较死板,因此含有列表类的我都推荐自定义
    5)宽高盛满全屏:FullScreenPopupView
    没有任何内容,因此没有layout,只是起到撑开的作用
    6)显示在底部的列表Popup:BottomListPopupView getImplLayoutId
    使用layout为_xpopup_center_impl_list,同CenterListPopupView。
    7)依附于某View的列表弹窗:AttachListPopupView getImplLayoutId
    layout为R.layout._xpopup_attach_impl_list,layout中只有一个根节点VerticalRecyclerView
    ,其继承自RecyclerView,是列表显示的核心控件
    8)局部阴影的弹窗PartShadowPopupView getImplLayoutId
    说明曰:类似于淘宝商品列表的下拉筛选弹窗,可放于任意位置,继承使用需要实现getImplLayoutId

  • 原生库说明:
    1)居中Pop:CenterPopupView getPopupLayoutId
    默认返回_xpopup_center_popup_view,根节点为FrameLayout,使用时应用根节点最好为LinearLayout
    2)底部弹出:BottomPopupView
    layout为_xpopup_bottom_popup_view,根节点为SmartDragLayout,使用时应用根节点最好为LinearLayout
    3)带drawer的弹窗:DrawerPopupView
    默认返回,根节点为drawerLayout PopupDrawerLayout,就是drawer部分,内部包含节点为drawerContentContainer FrameLayout,
    4)依附于某View的列表:AttachPopupView
    layout为R.layout._xpopup_attach_popup_view,同PositionPopupView,layout中只有一个根节点PartShadowContainer
    ,contentView获取的是整个View
    5)水平方向依附View:HorizontalAttachPopupView
    6)自由定位的弹窗(允许居中):PositionPopupView
    layout为R.layout._xpopup_attach_popup_view,同AttachPopupView,layout中只有一个根节点PartShadowContainer
    ,contentView获取的是整个View
    根据设置判断是否居中,如果居中取屏幕宽度与当前窗体之差的一半,设置为左上点;不居中则按照配置中的(x,y)定位与屏幕
    7)大图浏览:ImageViewerPopupView
    使用layout为_xpopup_image_viewer_popup_view,其中包括两个自定义组件:用于大图浏览弹窗显示后的有边白色占位View BlankView和核心部件ViewPager用于幻灯片播放的PhotoViewContainer,底部显示有text用于显示图片页码和保存button

  • XPopup配置修改
    1)背景色修改:shadowBgColor,default:#9F000000
    2)状态栏背景色修改:statusBarShadowColor,default:#55000000
    3)主色调修改:primaryColor,default:#121212
    4)动画持续时间:animationDuration,default:360
    注意设置的颜色接受为:Color的int值包括:
    注意:PopupInfo中有全部可配置的选项的详细说明,setBackground允许修改的背景色都是面板的而非半透明背景的。如设置该背景为颜色,在第一次弹出时会有充满全屏的效果一闪而过,犹如bug需要注意

  • XPopup是否Show的判断
    这个问题在1.8之前都很苦手,但1.8更新之后得到了解决,我目前的版本是1.8.10

判断弹窗是否show目前有两个方法
1)testDialog.isShown
isShown是View的方法,根据说明当View的所有祖先可见性都是VISIBLE,则返回VISIBLE            

2)public boolean isShow() 
 弹窗基类BasePopupView的方法,返回的是当前状态标志位
 return popupStatus != PopupStatus.Dismiss;

经过实际测试发现两者返回值一致

发布了66 篇原创文章 · 获赞 5 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/yuemitengfeng/article/details/104510704