目录

  • 最终效果图
  • 前言
  • 布局文件
  • 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做个实用的视频播放器相关推荐

  1. 用QT5做一个视频播放器

    作为一个菜鸟有空的时候都会做一些QT小项目拿来练练手,今天做的是一个视频播放器,暂时只实现了本地视频的播放,后续会继续完善实现网络播放功能. (1)因为图片都是自己网上随便找的,做的界面有点丑,后续有 ...

  2. Android开发之视频播放器

    Android开发之视频播放器 一.效果图 二.build.gradle中导入依赖 三.主布局文件(activity_video) 四.布局文件(video_item) 五.布局文件(activity ...

  3. python开发网页视频播放器_HTML5 VideoAPI,打造自己的Web视频播放器

    本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 注意:au ...

  4. html5直播api,HTML5 VideoAPI,打造自己的Web视频播放器

    本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 注意:au ...

  5. 基于ffmpeg+opengl+opensl es的android视频播放器

    最近做了一个android视频播放器,在jni中采用c/c++现了播放器的播放,暂停,快进等基本的播放器功能. 使用开源库FFMpeg来解码,得到音视频数据,FFMPEG是一个功能强大的音视频解码,编 ...

  6. 兼容性不错的视频播放器:轻播zFuse Pro for Mac

    想拥有一款简洁.实用的视频播放器吗?轻播zFuse Pro Mac中文破解版采用最新DirectX硬件加速技术,特有画面增益,清晰播放720p.1080p高清.无需额外解码包即可解码,如:H.264. ...

  7. web前端入门到实战:HTML5 VideoAPI,打造自己的Web视频播放器

    本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 <v ...

  8. iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器

    1.前言 标题必须要浮夸!要感觉像是一个大新闻.长者如是说. 其实是前几天去面试的时候,被要求说必须做过视频播放相关项目.有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功 ...

  9. 用Android做的一个简单的视频播放器

    視頻播放器项目功能需求 1 项目概述 1.1 项目描述 視頻播放器(以及視頻管理系統)是一款由java(Swing,安卓和数据库)做的手机视频播放器,可以看手机本地的各种视频,通过按钮进入手机视频管理 ...

最新文章

  1. HTML+CSS做支付表单
  2. 大量多风格多功能后台管理模板
  3. autopep8规范你的python代码
  4. 时序分析:DTW算法(基于模板)
  5. Leetcode1:Two Sum
  6. 如何脱离SDK,使用DW5.5和phonegap以及JQMobile搭建开发环境
  7. 嵌入式软件开发工程师谈软件架构的设计
  8. 演示:外部全局地址与外部局部地址的使用案例
  9. securecrt使用_SecureCRT会话丢失原因及解决方法
  10. Jsp Servlet Mysql实现的Java Web在线商城项目源码
  11. android---手电筒之摩尔斯电码
  12. Windows10更新提示语言不同不能保留程序和设置
  13. ubuntu开机启动+图标配置
  14. kpi绩效考核流程图_某集团公司完整KPI绩效考核方案(PPT)
  15. Android基础Activity篇——创建一个活动(Activity)
  16. CVR预估论文阅读笔记:一次性解决三大难题
  17. 基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现
  18. 解决mysql每天12点的dos弹框
  19. 我的长发和我的酒瓶子
  20. 今日收获 18/4/2

热门文章

  1. java数据结构-Vector
  2. .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
  3. pandas - Series
  4. 收藏一些效果炫酷的可视化网站
  5. Centos Flex 2.6.4
  6. SAwUML – UML-based, contractual software architectures and their formal analysis using SPIN
  7. tomcat配置https以及http强制跳转https(如何生成证书)
  8. Python3.x:pip命令安装第三方库,超时处理方案
  9. IO编程__字节流__输入、输出__图片移动
  10. 万水千山ABP - 弹出对话框禁用回车