Android-推荐一个弹窗开源库XPopup

图片来源于网络

分享一个我日常开发当中使用到poupwindow开发库,它可以帮我代替Dialog的存在。基本弹框类的需求都是能够满足的,这个库的名称是XPopup

XPopup依赖

implementation 'com.github.li-xiaojun:XPopup:2.7.5'

我发表这篇博客的时,XPopup在最新的版本是2.7.5。

内置弹框

开源库的作者分享了一波他内置的弹窗,看博客的小伙伴可以到时候直接用。

显示确认和取消对话框

这应该是App开发当中最常见的对话框了,这个库能帮我们简单实现:

XPopup.Builder(getContext()).asConfirm("我是标题", "我是内容") { 
    Toast.makeText(getContext(),"点击确认",Toast.LENGTH_SHORT).show()
}
.show()

显示带输入框的确认和取消对话框

XPopup.Builder(getContext()).asInputConfirm("我是标题", "请输入内容。") { text ->    
    Toast.makeText(getContext(),"输入内容:${text}",Toast.LENGTH_SHORT).show()
}
.show()

显示中间弹出的列表弹窗

XPopup.Builder(getContext())   
          .asCenterList("请选择一项", arrayOf("条目1", "条目2", "条目3", "条目4")) { position, text ->        
            
            Toast.makeText(getContext(),"点击内容:${text}",Toast.LENGTH_SHORT).show()           
          } 
        .show()

显示中间弹出的加载框

XPopup.Builder(getContext()).asLoading("正在加载中").show()

显示依附于某个View或者某个点的弹窗

XPopup.Builder(getContext())   
          .atView(v) // 依附于所点击的View,内部会自动判断在上方或者下方显示    
          .asAttachList(arrayOf("分享", "编辑", "不带icon"),        intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher)    ) { _, text ->        
          Toast.makeText(getContext(), "点击内容:${text}", 
Toast.LENGTH_SHORT).show()    
        }   
        .show()

自定义窗口示例

具体的示例会很多,但是自定义原理都是相通的,我拿一个自定义居中弹框举例:

class CustomPopup(context: Context) : CenterPopupView(context) {    
    // 返回自定义弹窗的布局    
    override fun getImplLayoutId(): Int = R.layout.custom_popup    
    
    // 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑    
    override fun onCreate() {        
        super.onCreate()        
        findViewById(R.id.tv_close).setOnClickListener {            
            dismiss() // 关闭弹窗        
            }    
     }    
            
     // 设置最大宽度,看需要而定,    
     override fun getMaxWidth(): Int {        
        return super.getMaxWidth()    
     }   
     
     // 设置最大高度,看需要而定    
     override fun getMaxHeight(): Int {        
        return super.getMaxHeight()   
    }   
    
    // 设置自定义动画器,看需要而定    
    override fun getPopupAnimator(): PopupAnimator? {       
        return super.getPopupAnimator()    
    }    
    
    /**     
      * 弹窗的宽度,用来动态设定当前弹窗的宽度,受getMaxWidth()限制     
      *     
      * @return     
      */    
      override fun getPopupWidth(): Int {        
            return 0    
       }  
      
      /**     
        * 弹窗的高度,用来动态设定当前弹窗的高度,受getMaxHeight()限制     
        *     
        * @return     
        */    
        override fun getPopupHeight(): Int {       
            return 0    
        }
}

使用自定义弹框

XPopup.Builder(getContext()).asCustom(CustomPopup(getContext())).show()

调用自定义弹窗就是上面一句代码就可以了,是不是很简单。

代码混淆

-dontwarn com.lxj.xpopup.widget.**
-keep class com.lxj.xpopup.widget.**{*;}

以上就是我使用这个开源库的心得,希望对看文章小伙伴有所帮助。

你可能感兴趣的:(Android-推荐一个弹窗开源库XPopup)