Kotlin--实现视频播放全屏
2018-10-24 本文已影响11人
GitCode8
- 实现全屏的第一个步骤,就是要把屏幕切换为横屏状态,这里我们直接在
AndroidMainfest.xml
为Activity 设置为横屏模式android:screenOrientation="landscape"
。
<activity android:name=".other.MediaPlayerActivity" android:screenOrientation="landscape"/>
此时的界面状态如下:
初始状态
2、去掉状态栏和导航条,在MediaPlayerActivity
重写onWindowFocusChanged
方法,代码如下:
super.onWindowFocusChanged(hasFocus)
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
}
}
由于android5.0才支持去掉状态栏,所以我们在这里做了个判断。
此时界面如下:
3、通过第2步,我们知道界面底部有一条白色的横条,为此,我们通过重写
VideoView
的onMeasure
方法,达到全屏效果。代码如下:
class CustomVideoView : VideoView {
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
var width = getDefaultSize(getScreenPoint().x, widthMeasureSpec)
var height = getDefaultSize(getScreenPoint().y, heightMeasureSpec)
setMeasuredDimension(width, height);
}
}
在布局在使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.zhangwenshuan.palyer.CustomVideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
那么,效果就实现了:
最终效果
第一次全屏的时候,系统会提示从屏幕下滑可以显示导航条。避免不知道怎么返回。
4、这是最重要一步,关注公众号,一起进步。
用时间,换天分