配置权限:
uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE”>
代码片:
public class MainActivity extends AppCompatActivity {
private VideoView vv;
private ImageView iv;
private GestureDetector mGesture;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vv= (VideoView) findViewById(R.id.vv);
//获取要播放文件在内存卡中的绝对路径,文件要存放在手机内部内存才能读取到文件
vv.setVideoPath(Environment.getExternalStorageDirectory()+ File.separator+"03.mp4");
//实例化与手势监听相关的变量
mGesture=new GestureDetector(this,new MyGester());
//设置播放控制器
vv.setMediaController(new MediaController(this));
//获取焦点
vv.requestFocus();
//至此需要手动点击控制播放器播放,自动播放需要添加监听事件
vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//设置全屏模式,videoView要用一个单独的布局包裹才有效果
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
//消除边框
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
vv.setLayoutParams(layoutParams);
vv.start();//视频准备后自动播放
}
});
/**
*重写onTouchEvent事件,拖动完成隐藏快进和快退图片
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
mGesture.onTouchEvent(event);//手势添加按压的事件
if(event.getAction()==MotionEvent.ACTION_UP){
iv.setVisibility(View.GONE);
}
return super.onTouchEvent(event);
}
/**
* 定义手势监听的内部类继承 GestureDetector.SimpleOnGestureListener
* 重写onScroll滑动监听的方法,左右滑动值监听X轴
*/
class MyGester extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if(Math.abs(distanceX)>Math.abs(distanceY)){//横向移动距离大于纵向,只监听横向
iv.setVisibility(View.VISIBLE);//显示快进或者快退图标
if(distanceX>0){//说明是往左滑动
iv.setImageResource(R.drawable.left);
}else if(distanceX<0){
iv.setImageResource(R.drawable.right);
}
//让videoView的播放位置移动到手势拖动后的位置(*15知识为了缩小滑动比例)
vv.seekTo((int) (vv.getCurrentPosition()-distanceX*15));
}
return super.onScroll(e1, e2, distanceX, distanceY);
}
}