feat: 添加PopupWindow和LifecycleOwner扩展

This commit is contained in:
Quyunshuo
2021-07-11 18:16:29 +08:00
parent dddd7f5b54
commit 456d08024b
2 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,27 @@
package com.quyunshuo.androidbaseframemvvm.base.ktx
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
/**
* 对LiveData订阅的简化封装
*
* 使用示例
* ```
* override fun initObserve() {
* observe(mViewModel.stateViewLD, ::stateViewLivaDataHandler)
* }
*
* private fun stateViewLivaDataHandler(data: StateLayoutEnum) {
* ...
* }
* ```
*
* @receiver LifecycleOwner
* @param liveData LiveData<T> 需要进行订阅的LiveData
* @param action action: (t: T) -> Unit 处理订阅内容的方法
* @return Unit
*/
fun <T> LifecycleOwner.observe(liveData: LiveData<T>, action: (t: T) -> Unit) {
liveData.observe(this, { it?.let { t -> action(t) } })
}

View File

@ -0,0 +1,21 @@
package com.quyunshuo.androidbaseframemvvm.base.ktx
import android.view.View
import android.view.ViewGroup
import android.widget.PopupWindow
/**
* PopupWindow相关扩展
*
* @author Qu Yunshuo
* @since 1/4/21 10:48 AM
*/
/**
* 测量view宽高
*/
fun PopupWindow.makeDropDownMeasureSpec(measureSpec: Int): Int {
val mode =
if (measureSpec == ViewGroup.LayoutParams.WRAP_CONTENT) View.MeasureSpec.UNSPECIFIED else View.MeasureSpec.EXACTLY
return View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.getSize(measureSpec), mode)
}