VideoView视频缓冲进度条
效果图:

需求:
刚进入视频播放页时,屏幕中间有加载进度条
视频播放过程中,视频界面不动了,正在缓冲时,屏幕中间有加载进度条
private ObjectAnimator rotate;
ImageView bufferProgress;
int old_position = 0; //初始化的时候就开启旋转动画
rotate = ObjectAnimator.ofFloat(bufferProgress, "rotation", 0f, 360f);
rotate.setRepeatCount(RotateAnimation.INFINITE);
rotate.setDuration(1000);
bufferProgress.setVisibility(View.VISIBLE);
rotate.start();
rotate.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) { } @Override
public void onAnimationEnd(Animator animation) { } @Override
public void onAnimationCancel(Animator animation) {
bufferProgress.setVisibility(View.GONE);
} @Override
public void onAnimationRepeat(Animator animation) { }
}); //视频播放准备好了就取消动画
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
...
rotate.cancel();
}
}); //因为播放进度条本来就有一个定时器,所以正好用这个来监听,通过判断现在和下一秒的播放进度是否相等来决定是否显示缓冲进度条
timer.schedule(new TimerTask() {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
int currentPosition = videoView.getCurrentPosition();
if (old_position == currentPosition && videoView.isPlaying()) {
bufferProgress.setVisibility(VISIBLE);
rotate.start();
} else {
bufferProgress.setVisibility(GONE);
rotate.cancel();
}
old_position = currentPosition;
seekBar.setProgress(currentPosition);
seekBar.setSecondaryProgress(videoView.getBufferPercentage());
currentTime.setText(dateFormat.format(new Date(currentPosition)));
}
});
}
}, 0, 1000);
这里有些坑要注意:
1.本来我是想通过MediaPlayer.setOnBufferingUpdateListener得到缓冲进度和播放进度比较来判断是否显示,结果发现缓冲进度永远大于播放进度,即时视频卡住正在缓冲的时候,所以无法实现
2.播放进度条的定时器是一秒一秒的,如果缓冲进度条旋转的话,每秒都会回到初始位置,如果一开始设置旋转一圈的时间大于一秒,那么缓冲进度条旋转起来就像断断续续的,所以要么设置一秒旋转一圈(有些快),要么缓冲进度条是个无论从任何方向看都是一样的,这样旋转起来就像连续的
VideoView视频缓冲进度条的更多相关文章
- FLV视频播放:对未缓冲进度条实现拖动
FLV视频播放:对未缓冲进度条实现拖动 流媒体开发 Add comments 八282010 一.文件准备 1.转码:ffmpeg 2.添加元数据:yamdi 二.网页播放器:jw player 使 ...
- windows下flv视频网站进度条随意拖放[转]
网站中视频都转换成flv格式,奈何flv格式无法拖拽,此问题纠结了好久,最终得以解决.现将解决思路记录下来,大多数源于网上找到的. 视频拖拽满足要求 1.播放器要支持 2.flv视频要有关键帧和met ...
- ajax 异步上传视频带进度条并提取缩略图
最近在做一个集富媒体功能于一身的项目.需要上传视频.这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图. 服务端响应 { "thumbnail": "/ ...
- cocos2d-x视频控件VideoPlayer的用户操作栏进度条去除(转载)
目前遇到两个问题: (1)视频控件移除有问题,会报异常. (2)视频控件有用户操作栏,用户点击屏幕会停止视频播放. 对于第一个问题,主要是移除控件时冲突引起的,目前简单处理是做一个延时处理,先stop ...
- 【液晶模块系列基础视频】4.5.X-GUI图形界面库-进度条等函数简介
[液晶模块系列基础视频]4.5.X-GUI图形界面库-进度条等函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地址 ...
- Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果
1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...
- 视频支持拖动进度条播放的实现(基于nginx)
http协议下的flv/mp4流式播放支持的三个要点: 1 服务器端要支持flv/mp4流式播放,现在nginx或者lighttpd都是支持这样的应用的,还支持mp4的流式播放(默认编译版本一般都是打 ...
- HTML+JS实现视频上传显示进度条
示例代码: css部分: #content{border: 1px solid saddlebrown;padding: 16px;border-radius: 2px} .list {top: 15 ...
- Html5中 视频 音频标签 进度条问题
最近项目中使用Html5的video和audio标签来在线播放视频和音频文件,但是遇到个奇葩的问题,页面上播放之后进度条无效, 查看w3c之后发现html代码并没有什么不同,之后猜想如果用静态的htm ...
随机推荐
- 线程函数对比 win/linux
原文
- 2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示
pygame是一个比较大的库,以我这点弱小的实力是没办法详解的.所以我只讲我懂得那些部分,其他部分由大家慢慢查找了解. ------------------------------- 我用pygame ...
- [Luogu 2023] AHOI2009 维护序列
[Luogu 2023] AHOI2009 维护序列 恕我冒昧这和线段树模板二有个琴梨区别? #include <cstdio> int n,m; long long p; class S ...
- ③ 设计模式的艺术-03.工厂方法(Factory Method)模式
public interface Car { void run(); } public class Audi implements Car { @Override public void run() ...
- 【Nginx】修改响应头,根据不同请求IP重定向到不同IP
背景: 使用CAS登录的过程中会涉及到三次重定向,如果在同一个局域网内,是没有任何问题的,但如果涉及到跨网访问,这个问题就比较蛋疼了. 解决思路: 通过Nginx对要访问的系统进行代理,根据请求IP来 ...
- Gmail登录(2017.10)
本文地址:http://www.cnblogs.com/veinyin/p/7646382.html 由于众所周知的原因,我们使用 Gmail 查看邮件时会有些麻烦,有时梯子不够用甚至不能查看. 比 ...
- 大数mod的技巧
1.mod 3 将各个位上的数字相加对3求余. 2.mod 11 设这个数为abcdefghijklmnopqrst. ans=(t-s+r-q+p-o+n-m+l-k+j-i(以此类推))mod 1 ...
- 【洛谷 P4437】 [HNOI/AHOI2018]排列(贪心,堆)
题目链接 如果\(j<=k,a_{p[j]}!=p[k]\)可以理解为如果\(a_{p[j]}=p[k]\),那么\(k\)一定要放在\(j\)前面,也就是\(a_j\)在\(j\)前面. 于是 ...
- Discrete Logging(POJ2417 + BSGS)
题目链接:http://poj.org/problem?id=2417 题目: 题意: 求一个最小的x满足a^x==b(mod p),p为质数. 思路: BSGS板子题,推荐一篇好的BSGS和扩展BS ...
- 深入理解Spring之九:DispatcherServlet初始化源码分析
转载 https://mp.weixin.qq.com/s/UF9s52CBzEDmD0bwMfFw9A DispatcherServlet是SpringMVC的核心分发器,它实现了请求分发,是处理请 ...