Android开发播放视频控制进度的控件VideoView

配置权限:

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);
        }
    }

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值