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

来源:互联网 发布:linux 查找日志关键字 编辑:程序博客网 时间:2024/04/28 09:41

配置权限:

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);        }    }
0 0
原创粉丝点击