public void show(int timeout) {异步
if (!mShowing) {ide
top_framelayout.setVisibility(View.VISIBLE);spa
bottom_framelayout.setVisibility(View.VISIBLE);视频
mShowing = true;rem
}源码
if (timeout != 0) {it
Message msg = mHandler.obtainMessage(FADE_OUT);io
mHandler.removeMessages(FADE_OUT);event
mHandler.sendMessageDelayed(msg, timeout);class
}
}
public void hide() {
if (mShowing) {
top_framelayout.setVisibility(View.GONE);
bottom_framelayout.setVisibility(View.GONE);
mShowing = false;
}
}
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case FADE_OUT:
hide();
break;
}
}
};
private void toggleMediaControlsVisiblity() {
if (mShowing) {
hide();
} else {
show(sDefaultTimeout);
}
}
// 手势类
public class MySimpleOnGestureListener extends SimpleOnGestureListener {
@Override
public boolean onSingleTapUp(MotionEvent e) {
toggleMediaControlsVisiblity();
return super.onSingleTapUp(e);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
以上实现方式参考了:VideoView源码及其MediaController的源码。
二、
使用MediaPlayer视频播放的时候,直接把拖动条拖动到最后,而后再往回拖动,这时奇葩的事情发生了:视频界面更换了,可是不能播放了,这是怎么回事呢?用VideoView就不会出现这个问题。差距在哪里?
关于点击seekbar能够看到画面可是不能播放的问题, 我认为你使用seekto是须要为mediaPlayer添加OnSeekCompleteListener,由于seekto是个异步方法
mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {
public void onSeekComplete(MediaPlayer m) {
m.start();
//isPlaying = true;
}
});