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