效果图:

需求:

刚进入视频播放页时,屏幕中间有加载进度条

视频播放过程中,视频界面不动了,正在缓冲时,屏幕中间有加载进度条

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视频缓冲进度条的更多相关文章

  1. FLV视频播放:对未缓冲进度条实现拖动

    FLV视频播放:对未缓冲进度条实现拖动  流媒体开发 Add comments 八282010 一.文件准备 1.转码:ffmpeg 2.添加元数据:yamdi 二.网页播放器:jw player 使 ...

  2. windows下flv视频网站进度条随意拖放[转]

    网站中视频都转换成flv格式,奈何flv格式无法拖拽,此问题纠结了好久,最终得以解决.现将解决思路记录下来,大多数源于网上找到的. 视频拖拽满足要求 1.播放器要支持 2.flv视频要有关键帧和met ...

  3. ajax 异步上传视频带进度条并提取缩略图

    最近在做一个集富媒体功能于一身的项目.需要上传视频.这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图. 服务端响应 { "thumbnail": "/ ...

  4. cocos2d-x视频控件VideoPlayer的用户操作栏进度条去除(转载)

    目前遇到两个问题: (1)视频控件移除有问题,会报异常. (2)视频控件有用户操作栏,用户点击屏幕会停止视频播放. 对于第一个问题,主要是移除控件时冲突引起的,目前简单处理是做一个延时处理,先stop ...

  5. 【液晶模块系列基础视频】4.5.X-GUI图形界面库-进度条等函数简介

    [液晶模块系列基础视频]4.5.X-GUI图形界面库-进度条等函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地址 ...

  6. Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果

    1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...

  7. 视频支持拖动进度条播放的实现(基于nginx)

    http协议下的flv/mp4流式播放支持的三个要点: 1 服务器端要支持flv/mp4流式播放,现在nginx或者lighttpd都是支持这样的应用的,还支持mp4的流式播放(默认编译版本一般都是打 ...

  8. HTML+JS实现视频上传显示进度条

    示例代码: css部分: #content{border: 1px solid saddlebrown;padding: 16px;border-radius: 2px} .list {top: 15 ...

  9. Html5中 视频 音频标签 进度条问题

    最近项目中使用Html5的video和audio标签来在线播放视频和音频文件,但是遇到个奇葩的问题,页面上播放之后进度条无效, 查看w3c之后发现html代码并没有什么不同,之后猜想如果用静态的htm ...

随机推荐

  1. mongodb角色权限

    角色说明:Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建.删除,查看统计或访问system.profileus ...

  2. uva 557 Burger

    https://vjudge.net/problem/UVA-557 题意: n个人,n/2个牛肉煲,n/2个鸡肉堡 每次抛硬币,根据正反决定每个人吃什么汉堡 如果某一个汉堡被选完了,就不抛了 问最后 ...

  3. 强大的jQuery网格插件 ParamQuery

    ParamQuery是一种轻量级的jQuery网格插件,基于用于用户界面控制.具有一致API的优秀设计模式jQueryUI Widget factory创建,能够在网页上展示各种类似于Excel和Go ...

  4. HashSet的特性介绍

    HashSet除了在元素的存储上是无序的以外,还是不能够存储重复的元素. HashSet如何判断元素是否重复呢?是根据元素继承的两个方法来判断,hashCode和equals,当存储元素时,首先判断要 ...

  5. Python自定义web框架、Jinja2

    WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server ...

  6. 爬虫--selenium

    什么是selenium? 基本使用 from selenium import webdriver from selenium.webdriver.common.by import By from se ...

  7. linux下subversion的安装

    第一章 安装 这里以RHEL5下安装subversion-1.6.6,为例 1. 下载源码包 在http://archive.apache.org/dist/subversion/网站下载 subve ...

  8. sqlmap tamper编写

    #!/usr/bin/env python """ Copyright (c) 2006-2017 sqlmap developers (http://sqlmap.or ...

  9. LDA线性判别分析

    LDA线性判别分析 给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的近,异类样例点尽可能的远,对新样本进行分类的时候,将新样本同样的投影,再根据投影得到的位置进行判断,这个新样本的 ...

  10. PIP安装时报The repository located at pypi.douban.com is not a trusted or secure host and is being ignore

    C:\WINDOWS\system32>pip install scrapyCollecting scrapy The repository located at pypi.douban.com ...