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
- Android开发播放视频控制进度的控件VideoView
- Android移动开发-使用VideoView播放视频的实现
- android之视频播放系统VideoView和自定义VideoView控件的应用
- 视频播放控件VideoView的基本使用
- Android开发 之 videoview循环播放视频
- Android开发之使用VideoView播放视频
- Android VideoView播放视频
- Android VideoView播放视频
- Android VideoView播放视频
- Android VideoView播放视频
- Android VideoView播放视频
- android videoview播放视频
- android---视频播放---VideoView
- Android视频播放---VideoView
- Android播放视频VideoView
- Android VideoView播放视频
- Android VideoView 播放视频
- [Android视频播放] VideoView
- 三阶魔方CFOP复原的C语言算法
- Spring框架实现AOP的xml和注解两种方式
- 希尔排序--学习笔记
- python实现等同于excel的Lookupv函数处理excel文件
- Allegro带通孔焊盘的制作
- Android开发播放视频控制进度的控件VideoView
- postgresql: C:: Permission denied
- 数据库简介
- LeetCode 100. Same Tree 题解 —— Java
- 题目1012:畅通工程
- JavaScript RegExp 对象
- 选择排序---学习笔记
- Android 播放提示音 MediaPlayer 简单暴力
- Spring Boot HTTP over JSON 的错误码异常处理