参看:Android自定义视频播放器(一):https://blog.csdn.net/zxd1435513775/article/details/81507909
一、引言上一篇在对VideoView使用时,加上了这样一行代码:
videoView.setMediaController(new MediaController(this));
这行代码为VideoView加上了控制面板,可以操作视频播放的快慢和暂停,我们在Manifest文件中,把页面横屏展示,配置代码:
效果如下如所示:
对于VideoView系统自带的控制面板,很简单但不是很好用,下面来为VideoView自定义控制面板,增强其控制面板的功能。
1、VideoActivity页面布局
我们让VideoView在布局中居中显示,然后在该布局中使用include标签导入自定义控制面板的样式,布局代码如下,这里贴出的只是页面的主体布局,对于各个selector也很简单,就不贴了:
三、自定义控制面板效果
1、布局需要注意
上述控制面板页面布局中,需要注意地方是,声音的SeekBar的三个背景颜色,这里是采用自定义,需要覆盖掉系统的自定义样式,对应的选择器代码如下:
在VideoActivity中可以看到如下效果:
布局写完了,要在VideoActivity中,对这些元素进行初始化,然后再对这些元素绑定事件的监听器,就可以操作视频的播放了。这里对获取页面元素,我们采用第三方工具,省时省力。 https://www.buzzingandroid.com/tools/android-layout-finder/ 打开这个网址后,把我们的xml布局文件复制到里面,就可以得到所有的带id的元素。 获取到的初始化代码如下:
private LinearLayout llTop;
private TextView tvName;
private ImageView ivBattery;
private TextView tvSystemTime;
private Button btnVoice;
private SeekBar seekbarVoice;
private Button btnSwichPlayer;
private LinearLayout llBottom;
private TextView tvCurrentTime;
private SeekBar seekbarVideo;
private TextView tvDuration;
private Button btnExit;
private Button btnVideoPre;
private Button btnVideoStartPause;
private Button btnVideoNext;
private Button btnVideoSiwchScreen;
/**
* Find the Views in the layout
*
* Auto-created on 2018-08-09 11:01:32 by Android Layout Finder
* (http://www.buzzingandroid.com/tools/android-layout-finder)
*/
private void findViews() {
llTop = (LinearLayout)findViewById( R.id.ll_top );
tvName = (TextView)findViewById( R.id.tv_name );
ivBattery = (ImageView)findViewById( R.id.iv_battery );
tvSystemTime = (TextView)findViewById( R.id.tv_system_time );
btnVoice = (Button)findViewById( R.id.btn_voice );
seekbarVoice = (SeekBar)findViewById( R.id.seekbar_voice );
btnSwichPlayer = (Button)findViewById( R.id.btn_swich_player );
llBottom = (LinearLayout)findViewById( R.id.ll_bottom );
tvCurrentTime = (TextView)findViewById( R.id.tv_current_time );
seekbarVideo = (SeekBar)findViewById( R.id.seekbar_video );
tvDuration = (TextView)findViewById( R.id.tv_duration );
btnExit = (Button)findViewById( R.id.btn_exit );
btnVideoPre = (Button)findViewById( R.id.btn_video_pre );
btnVideoStartPause = (Button)findViewById( R.id.btn_video_start_pause );
btnVideoNext = (Button)findViewById( R.id.btn_video_next );
btnVideoSiwchScreen = (Button)findViewById( R.id.btn_video_siwch_screen );
btnVoice.setOnClickListener( this );
btnSwichPlayer.setOnClickListener( this );
btnExit.setOnClickListener( this );
btnVideoPre.setOnClickListener( this );
btnVideoStartPause.setOnClickListener( this );
btnVideoNext.setOnClickListener( this );
btnVideoSiwchScreen.setOnClickListener( this );
}
/**
* Handle button click events
*
* Auto-created on 2018-08-09 11:01:32 by Android Layout Finder
* (http://www.buzzingandroid.com/tools/android-layout-finder)
*/
@Override
public void onClick(View v) {
if ( v == btnVoice ) {
// Handle clicks for btnVoice
} else if ( v == btnSwichPlayer ) {
// Handle clicks for btnSwichPlayer
} else if ( v == btnExit ) {
// Handle clicks for btnExit
} else if ( v == btnVideoPre ) {
// Handle clicks for btnVideoPre
} else if ( v == btnVideoStartPause ) {
// Handle clicks for btnVideoStartPause
} else if ( v == btnVideoNext ) {
// Handle clicks for btnVideoNext
} else if ( v == btnVideoSiwchScreen ) {
// Handle clicks for btnVideoSiwchScreen
}
}
对于各个元素绑定事件的具体操作,下面文章接着讲。