feat: 添加PopupWindow和LifecycleOwner扩展
This commit is contained in:
@ -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) } })
|
||||
}
|
||||
@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user