使用VideoView做个实用的视频播放器
目录
- 最终效果图
- 前言
- 布局文件
- VideoView的使用
- 横竖屏切换
- 文件选择
- 手势调节音量
- 最后
最终效果图
前言
这里用VideoView写一个播放器, 可以横竖屏, 可以选文件, 可以暂停, 可以快进后退, 可以进度条拖动, 可以触屏调节音量. 来看看怎么实现的吧!
布局文件
用
RelativeLayout
包裹VideoView
是要点, 常规设置会形变的. 当然了, 还要重写onConfigurationChanged
, 见后面横竖屏切换.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:context="com.so.mymedia.ui.activity.MainActivity"tools:showIn="@layout/activity_main"><RelativeLayoutandroid:id="@+id/rl_vv"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/black"android:minHeight="200dp"><VideoViewandroid:id="@+id/vv_video"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerInParent="true" /></RelativeLayout>
</RelativeLayout>
复制代码
VideoView的使用
VideoView使用起来非常简单, 设置好MediaController, 然后设置URI或者是Path, 然后start开始就好. 这里的要点是一些使用功能的实现. 可以查阅官方文档.
横竖屏切换
第一步是到配置文件里面设置. 在activity标签下添加
android:configChanges="keyboard|orientation|screenSize"
. 这样的话, 屏幕切换的时候不会去调用onStop等方法. 我们在Toolbar里面添加切换横竖屏按钮, 然后重写onConfigurationChanged
.
@Override
public void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);if (mVvVideo == null) {return;}if (this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_LANDSCAPE) {// 横屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);getWindow().getDecorView().invalidate();float height = new ScreenUtil(this).getAppWidth();float width = new ScreenUtil(this).getAppHeight();mRlVv.getLayoutParams().height = (int) width;mRlVv.getLayoutParams().width = (int) height;} else {// 竖屏final WindowManager.LayoutParams attrs = getWindow().getAttributes();attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);getWindow().setAttributes(attrs);getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);float width = new ScreenUtil(this).getAppWidth();float height = DisplayUtil.dp2px(this, 200.f);mRlVv.getLayoutParams().height = (int) height;mRlVv.getLayoutParams().width = (int) width;}
}
复制代码
里面有几个uitl, 都是常见的封装, 不多说了. 这样就可以实现横竖屏切换了.
文件选择
关于文件选择器, 请查看我之前的文章. 然后就是要返回选中的文件路径. 这是Intent的常规使用了. 不多说了.
手势调节音量
添加触摸监听, 然后用手势操作实现. 然后是依据上下划方向确定增大还是减小音量. 调节音量的代码也是很常规的了.
@Override
public boolean onTouch(View v, MotionEvent event) {return mGestureDetector.onTouchEvent(event);
}
复制代码
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {float v = e2.getY() - e1.getY();if (Math.abs(v) > 10) {setVoiceVolume(v);}return true;
}
复制代码
private void setVoiceVolume(float value) {int currentVolume = mAM.getStreamVolume(AudioManager.STREAM_MUSIC);int maxVolume = mAM.getStreamMaxVolume(AudioManager.STREAM_MUSIC);int flag = value > 0 ? -1 : 1;currentVolume += flag * 0.15 * maxVolume;mAM.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);
}
复制代码
最后
如果想更多的DIY, 可以考虑使用SurfaceView, 但是VideoView大部分时候也够用了. 喜欢记得点赞或者关注我, 有意见或者建议评论区见.
使用VideoView做个实用的视频播放器相关推荐
- 用QT5做一个视频播放器
作为一个菜鸟有空的时候都会做一些QT小项目拿来练练手,今天做的是一个视频播放器,暂时只实现了本地视频的播放,后续会继续完善实现网络播放功能. (1)因为图片都是自己网上随便找的,做的界面有点丑,后续有 ...
- Android开发之视频播放器
Android开发之视频播放器 一.效果图 二.build.gradle中导入依赖 三.主布局文件(activity_video) 四.布局文件(video_item) 五.布局文件(activity ...
- python开发网页视频播放器_HTML5 VideoAPI,打造自己的Web视频播放器
本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 注意:au ...
- html5直播api,HTML5 VideoAPI,打造自己的Web视频播放器
本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 注意:au ...
- 基于ffmpeg+opengl+opensl es的android视频播放器
最近做了一个android视频播放器,在jni中采用c/c++现了播放器的播放,暂停,快进等基本的播放器功能. 使用开源库FFMpeg来解码,得到音视频数据,FFMPEG是一个功能强大的音视频解码,编 ...
- 兼容性不错的视频播放器:轻播zFuse Pro for Mac
想拥有一款简洁.实用的视频播放器吗?轻播zFuse Pro Mac中文破解版采用最新DirectX硬件加速技术,特有画面增益,清晰播放720p.1080p高清.无需额外解码包即可解码,如:H.264. ...
- web前端入门到实战:HTML5 VideoAPI,打造自己的Web视频播放器
本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 <v ...
- iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器
1.前言 标题必须要浮夸!要感觉像是一个大新闻.长者如是说. 其实是前几天去面试的时候,被要求说必须做过视频播放相关项目.有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功 ...
- 用Android做的一个简单的视频播放器
視頻播放器项目功能需求 1 项目概述 1.1 项目描述 視頻播放器(以及視頻管理系統)是一款由java(Swing,安卓和数据库)做的手机视频播放器,可以看手机本地的各种视频,通过按钮进入手机视频管理 ...
最新文章
- HTML+CSS做支付表单
- 大量多风格多功能后台管理模板
- autopep8规范你的python代码
- 时序分析:DTW算法(基于模板)
- Leetcode1:Two Sum
- 如何脱离SDK,使用DW5.5和phonegap以及JQMobile搭建开发环境
- 嵌入式软件开发工程师谈软件架构的设计
- 演示:外部全局地址与外部局部地址的使用案例
- securecrt使用_SecureCRT会话丢失原因及解决方法
- Jsp Servlet Mysql实现的Java Web在线商城项目源码
- android---手电筒之摩尔斯电码
- Windows10更新提示语言不同不能保留程序和设置
- ubuntu开机启动+图标配置
- kpi绩效考核流程图_某集团公司完整KPI绩效考核方案(PPT)
- Android基础Activity篇——创建一个活动(Activity)
- CVR预估论文阅读笔记:一次性解决三大难题
- 基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现
- 解决mysql每天12点的dos弹框
- 我的长发和我的酒瓶子
- 今日收获 18/4/2
热门文章
- java数据结构-Vector
- .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
- pandas - Series
- 收藏一些效果炫酷的可视化网站
- Centos Flex 2.6.4
- SAwUML – UML-based, contractual software architectures and their formal analysis using SPIN
- tomcat配置https以及http强制跳转https(如何生成证书)
- Python3.x:pip命令安装第三方库,超时处理方案
- IO编程__字节流__输入、输出__图片移动
- 万水千山ABP - 弹出对话框禁用回车