feat: 添加 VideoView 扩展
This commit is contained in:
@ -0,0 +1,42 @@
|
|||||||
|
package com.quyunshuo.androidbaseframemvvm.base.ktx
|
||||||
|
|
||||||
|
import android.media.MediaPlayer
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.VideoView
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据视频的尺寸与容器尺寸比例,动态调整 [VideoView] 的尺寸以适应视频的尺寸
|
||||||
|
* 解决 [VideoView] 尺寸比例与视频尺寸比例不一致导致视频拉伸的问题
|
||||||
|
*
|
||||||
|
* 容器可以是屏幕或者 [VideoView]
|
||||||
|
*
|
||||||
|
* 使用方式:
|
||||||
|
* 1. 通过 [VideoView.setOnPreparedListener] 向 [VideoView] 设置 [MediaPlayer.OnPreparedListener] 监听
|
||||||
|
* 2. 通过 [MediaPlayer.OnPreparedListener] 回调获取到视频的真实宽高,调用该方法传入参数进行适配
|
||||||
|
* 3. 如果需要考虑横竖屏切换,请在横竖屏改变监听回调中再次调用该方法进行适配
|
||||||
|
*
|
||||||
|
* @receiver [VideoView]
|
||||||
|
* @param containerW Float 容器的真实宽
|
||||||
|
* @param containerH Float 容器的真实高
|
||||||
|
* @param videoW Float 视频的真实宽
|
||||||
|
* @param videoH Float 视频的真实高
|
||||||
|
*/
|
||||||
|
fun VideoView.resetVideoViewDimensions(
|
||||||
|
containerW: Float,
|
||||||
|
containerH: Float,
|
||||||
|
videoW: Float,
|
||||||
|
videoH: Float,
|
||||||
|
) {
|
||||||
|
// 计算宽高比进行调整宽高
|
||||||
|
this.layoutParams = if (videoW / containerW < videoH / containerH) {
|
||||||
|
this.layoutParams.apply {
|
||||||
|
width = ViewGroup.LayoutParams.WRAP_CONTENT
|
||||||
|
height = ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.layoutParams.apply {
|
||||||
|
width = ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
|
height = ViewGroup.LayoutParams.WRAP_CONTENT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user