前段时间做了一个新闻APP,涉及到了列表视频播放,和腾讯新闻APP差不多,总结了一下代码,写了一个Demo来分享给大家。

用了  TabLayout+RecylerView+自定义视频控件  完成的 列表中支持全屏播放

来看看效果图:

  

列表类代码:

public class ZQFragmentTabItem extends  BaseFragment{

    RecyclerView recyclerView;
AdapterRecyclerViewVideo adapterVideoList; public static ZQFragmentTabItem newInstance() {
ZQFragmentTabItem fragment = new ZQFragmentTabItem();
return fragment;
} private View rootView;
@Override
protected View getContentView(LayoutInflater inflater, ViewGroup container) {
rootView = inflater.inflate(R.layout.recyclerview_video_layout, container, false);
return rootView;
} @Override
protected void initViews(View contentView) { recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); adapterVideoList = new AdapterRecyclerViewVideo(getActivity());
recyclerView.setAdapter(adapterVideoList);
recyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
@Override
public void onChildViewAttachedToWindow(View view) {
} @Override
public void onChildViewDetachedFromWindow(View view) {
ZQVideoPlayer jzvd = (ZQVideoPlayer) view.findViewById(R.id.videoplayer);
if (jzvd != null && ZQUtils.dataSourceObjectsContainsUri(jzvd.dataSourceObjects, ZQMediaManager.getCurrentDataSource())) {
ZQVideoPlayer.releaseAllVideos();
}
}
}); } @Override
protected void initListeners() { } @Override
protected void initDatas() {
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
} @Override
public void onPause() {
super.onPause();
ZQVideoPlayer.releaseAllVideos();
}
}

当然我这也参考了其他小伙伴的案例,然后才写的。

参考的地址:

https://gitee.com/nathen/jiecaovideoplayer

https://gitee.com/weituotian/WeituotianVideoAndroidApp

https://gitee.com/luorenjiejie/ShiPin

希望对开发者的小伙伴们有帮助。

代码下载Github:https://github.com/DickyQie/android-video/tree/video-related-cases

Android------视频播放器(包含全屏播放,快退,快进,腾讯新闻的列表播放等)的更多相关文章

  1. Android 视频播放器 (二):使用MediaPlayer播放视频

    在 Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容.也知道VideoView内部封装的就是Med ...

  2. Android 视频播放器切换到下个视频时残留上个视频画面的解决办法

    最近在做一个Android视频播放器,遇到一个问题:切换到下一个视频时,中间会停留上一个视频的残存画面.   这是怎么回事?   我在网上找了很多资料,终于找到了原因:我是用自定义一个surfacev ...

  3. android视频播放器开发

    http://blog.csdn.net/u010181592/article/details/49301703 http://blog.csdn.net/qq_33291295/article/de ...

  4. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  5. Android 视频播放器 (一):使用VideoView播放视频

    一.简介 作为Android开发,我们不可避免的会接触到视频播放,VideoView做为最简单的播放器,我们是不应该不会的. 下面简单介绍一下VideoView: VideoView是使用MediaP ...

  6. Android 视频播放器 (三):使用NBPlayer播放直播视频

    一.前言 在 Android 音视频开发学习思路 中,我们不断的学习和了解音视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来.这样才能得到更深层次的领悟.通过整理 ...

  7. Android 视频播放器 (四):使用ExoPlayer播放视频

    一.简介 ExoPlayer是一个Android应用层的媒体播放器,它提供了一套可替换Android MediaPlayer的API,可以播放本地或者是线上的音视频资源.ExoPlayer支持一些An ...

  8. CKPlayer 只调用HTML5播放器时全屏问题 这只是Chrome浏览器的渲染bug

    如题,在系统中使用CKPlayer播放器,一切顺利,偶然发现没有全屏按钮, 正常的全屏按钮是这样的: 经过一步步调试,发现问题出在iframe, 当视频页面在iframe内时,全屏按钮不显示了,这个和 ...

  9. Android 视频播放器 NurVideoPlayer ()

    我在实战项目中用了它. 更新了2.x.x版本ijkplayer的封装 支持屏幕滑动--滑动时间,亮度,声音,进度,支持全屏-单屏,双击暂停--继续,锁定屏幕,支持HTTP和https,也可以控制声道( ...

随机推荐

  1. 【node】----mocha单元测试框架-----【巷子】

    1.mocha简介 单元测试是用来对一个模块.一个函数.或者一个类来进行正确性的检测工作   特点:      既可以测试简单的JavaScript函数,又可以测试异步代码,           可以 ...

  2. Lucene.net的简单使用

    一.Lucene.net的简单介绍 1.为什么要使用Lucene.net       使用like的模糊查询,模糊度太低,中间添加几个字就无法查找.同时会造成数据库的全文检索,效率低下,数据库服务器造 ...

  3. conda

    Conda是什么? Conda 是Anaconda下用于包管理和环境管理的命令行工具, Conda下一切都是包,包括Python和conda自己 Conda ≍ pip(包管理) + vitualen ...

  4. Mirror--生成用于镜像用户同步的脚本

    USE master GO IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL DROP PROCEDURE sp_hexadecimal GO CREATE PR ...

  5. mysql 数据操作 多表查询 子查询 带比较运算符的子查询

    带比较运算符的子查询 #比较运算符:=.!=.>.>=.<.<=.<> #查询大于所有人平均年龄的员工名与年龄 思路 先拿到所有人的平均年龄然后 再用另外一条sql ...

  6. IOS #ifdef 的那些事儿

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012884714/article/details/25188685 格式有点乱,整了几次都整只是来 ...

  7. 102-advanced-代码分割

    1.Bundling 大多数React应用程序将使用Webpack或Browserify等工具“捆绑”文件.捆绑是跟踪导入的文件并将它们合并到单个文件中的过程:“捆绑”.然后,该包可以包含在网页中以一 ...

  8. java-基础-【三】try/catch/finally

    原文地址: https://my.oschina.net/bieber/blog/703251 一.单层的try/catch public int test(int a,int b){ try{ re ...

  9. LockSupport HotSpot里park/unpark的实现

    每个java线程都有一个Parker实例,Parker类是这样定义的: class Parker : public os::PlatformParker { private: volatile int ...

  10. CSLA.Net学习(2)

    采用CSLA.net 2.1.4.0版本的书写方式: using System; using System.ComponentModel; using Csla.Validation; using S ...