[![Build Status](https://semaphoreapp.com/api/v1/projects/d4cca506-99be-44d2-b19e-176f36ec8cf1/128505/shields_badge.svg)](https://github.com/waynell/VideoListPlayer) [![](https://jitpack.io/v/waynell/VideoListPlayer.svg)](https://jitpack.io/#waynell/VideoListPlayer)
# VideoListPlayer
VideoListPlayer实现了在列表控件(ListView, RecyclerView)中加载并播放视频,并支持滑动时自动播放/暂停的功能
利用该项目,可以轻松实现类似Instagram的视频播放功能
**注意:最低支持API 14以上**
#效果预览
![](./art/preview.gif) ![](./art/Screenshot_20160716.png)
#Changelogs
**v.14**
1. 支持更多类型的scaleType,详见 [Android-ScalableVideoView](https://github.com/yqritc/Android-ScalableVideoView)
2. 加入 `getCurrentPosition()` 和 `getDuration()` 接口
**v1.3**
1. fix在多类型列表元素中出现视频无法正常播放的bug
**Demo 更新**
1. 增加在ListView中播放视频的示例
2. ListView和RecyclerView中支持多类型view type展示
**v1.2**
1. fix NPE bugs
**v1.1**
1. 自动播放/停止功能性能优化
2. 视频播放加入声音开关控制,默认播放视频关闭声音,点击视频开启声音
3. fix在4.1.1以下无法播放视频的bug
#基本用法
添加gradle依赖
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
compile 'com.github.waynell:VideoListPlayer:1.4'
}
在xml布局中加入以下代码
<com.waynell.videolist.widget.TextureVideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="300dp" />
然后设置视频路径地址,最后调用start()方法开始播放视频
videoView.setVideoPath(mVideoPath);
videoView.start();
视频播放是异步的,可以通过设置MediaPlayerCallback回调监听播放事件
view.setMediaPlayerCallback(this);
监听事件如下
void onPrepared(MediaPlayer mp);
void onCompletion(MediaPlayer mp);
void onBufferingUpdate(MediaPlayer mp, int percent);
void onVideoSizeChanged(MediaPlayer mp, int width, int height);
boolean onInfo(MediaPlayer mp, int what, int extra);
boolean onError(MediaPlayer mp, int what, int extra);
#滑动时自动播放/停止的功能
首先,你必须实现ListItem接口来获取item被激活或取消激活的事件回调
public interface ListItem {
// 当前item被激活
void setActive(View newActiveView, int newActiveViewPosition);
// 当前item被取消
void deactivate(View currentView, int position);
}
其次,实现ItemsProvider接口返回当前列表总数和列表中某一位置的ListItem实例
public interface ItemsProvider {
ListItem getListItem(int position);
int listItemSize();
}
最后添加以下代码实现可见比的计算,以RecyclerView为例
ItemsProvider itemProvider;
ListItemsVisibilityCalculator calculator = new SingleListViewItemActiveCalculator(itemProvider,
new RecyclerViewItemPositionGetter(layoutManager, mRecyclerView););
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
mScrollState = newState;
if(newState == RecyclerView.SCROLL_STATE_IDLE && !mListItems.isEmpty()){
mCalculator.onScrollStateIdle();
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
mCalculator.onScrolled(mScrollState);
}
});
# 网络视频的本地缓存
请参考demo工程的实现
#实现原理
请参见我的博客 [视频在滑动列表中的异步缓存和播放](http://blog.waynell.com/2016/03/21/video-loader/)
#Thanks
[VideoPlayerManager](https://github.com/danylovolokh/VideoPlayerManager)
滑动自动播放/暂停的功能基于项目优化而来
没有合适的资源?快使用搜索试试~ 我知道了~
Android代码-实现了在列表控件(ListView, RecyclerView)中加载并播放视频
共76个文件
java:38个
xml:16个
png:6个
需积分: 50 23 下载量 81 浏览量
2019-08-06
17:11:16
上传
评论 4
收藏 6.67MB ZIP 举报
温馨提示
VideoListPlayer VideoListPlayer实现了在列表控件(ListView, RecyclerView)中加载并播放视频,并支持滑动时自动播放/暂停的功能 利用该项目,可以轻松实现类似Instagram的视频播放功能 注意:最低支持API 14以上 效果预览 Changelogs v.14 支持更多类型的scaleType,详见 Android-ScalableVideoView 加入 getCurrentPosition() 和 getDuration() 接口 v1.3 fix在多类型列表元素中出现视频无法正常播放的bug Demo 更新 增加在ListView中播放视频的示例 ListView和RecyclerView中支持多类型view type展示 v1.2 fix NPE bugs v1.1 自动播放/停止功能性能优化 视频播放加入声音开关控制,默认播放视频关闭声音,点击视频开启声音 fix在4.1.1以下无法播放视频的bug 基本用法 添加gradle依赖 repositories { maven { ur
资源推荐
资源详情
资源评论
收起资源包目录
Android代码-实现了在列表控件(ListView, RecyclerView)中加载并播放视频.zip (76个子文件)
VideoListPlayer-master
gradlew 5KB
settings.gradle 37B
art
Screenshot_20160716.png 113KB
preview.gif 6.43MB
video-list-player
src
main
AndroidManifest.xml 75B
res
values
attrs.xml 1KB
strings.xml 72B
java
com
waynell
videolist
visibility
calculator
DefaultSingleItemCalculatorCallback.java 833B
SingleListViewItemActiveCalculator.java 17KB
ListItemsVisibilityCalculator.java 337B
BaseItemsVisibilityCalculator.java 2KB
VisibilityPercentsCalculator.java 2KB
scroll
ScrollDirectionDetector.java 2KB
RecyclerViewItemPositionGetter.java 1KB
ItemsProvider.java 438B
ItemsPositionGetter.java 660B
ListViewItemPositionGetter.java 1KB
items
ListItemData.java 2KB
ListItem.java 747B
widget
ScaleManager.java 7KB
ScaleType.java 573B
TextureVideoView.java 16KB
Size.java 375B
PivotPoint.java 261B
build.gradle 438B
proguard-rules.pro 653B
LICENSE 1KB
gradle
wrapper
gradle-wrapper.properties 231B
gradle-wrapper.jar 52KB
README.md 4KB
gradlew.bat 2KB
gradle.properties 855B
.gitignore 407B
app
src
androidTest
java
com
waynell
videolist
ApplicationTest.java 352B
test
java
com
waynell
videolist
ExampleUnitTest.java 314B
main
AndroidManifest.xml 1KB
res
mipmap-hdpi
ic_launcher.png 3KB
mipmap-xxxhdpi
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher.png 5KB
mipmap-mdpi
ic_launcher.png 2KB
layout
pic_list_item.xml 636B
activity_list_view.xml 509B
video_list_item.xml 2KB
activity_recycler_view.xml 476B
text_list_item.xml 452B
activity_main.xml 761B
values-w820dp
dimens.xml 358B
values
colors.xml 248B
ids.xml 105B
strings.xml 209B
styles.xml 383B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 8KB
java
com
waynell
videolist
demo
model
PicItem.java 326B
VideoItem.java 471B
TextItem.java 301B
VideoLoadMvpView.java 382B
BaseItem.java 423B
target
VideoLoadTarget.java 2KB
ProgressTarget.java 4KB
VideoProgressTarget.java 1KB
WrappingTarget.java 2KB
VideoListGlideModule.java 7KB
MainActivity.java 871B
activity
ListViewActivity.java 5KB
RecyclerViewActivity.java 4KB
util
ItemUtils.java 2KB
holder
VideoViewHolder.java 6KB
BaseViewHolder.java 494B
TextViewHolder.java 589B
ViewHolderFactory.java 1KB
PicViewHolder.java 819B
.gitignore 7B
build.gradle 987B
proguard-rules.pro 653B
build.gradle 498B
共 76 条
- 1
资源评论
weixin_39840650
- 粉丝: 409
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功