ListView中视频播放的解决方案

本文介绍了如何在ListView中使用JieCaoVideoPlayer实现视频播放功能,包括全屏播放、自定义UI以及关键接口的使用。JieCaoVideoPlayer是一个轻量级的解决方案,支持多种嵌套模式下的全屏,并提供了设置http头信息、手势控制等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我博客前几篇是关于JieCaoVideoPlayer的源码分析。有兴趣可以看看

JieCaoVideoPlayer是我所见到的最简单的开源解决方案

先附上项目主页https://github.com/lipangit/JieCaoVideoPlayer

其实项目主页上介绍的够明白了。我就象征意义的Copy下


真正实现Android的全屏功能,立志成为Android平台使用最广泛的视频播放控件

主要特点

  1. 全屏时启动新Activity实现播放器真正的全屏功能
  2. 可以完全自定义UI
  3. 能在ListViewViewPagerListViewViewPagerFragment等多重嵌套模式下全屏工作
  4. 手势修改进度和音量
  5. 视频大小的屏幕适配,宽或长至少有两个对边是充满屏幕的,另外两个方向居中
  6. 可以在加载、暂停、播放等各种状态中正常进入全屏和退出全屏
  7. 支持hls,rtsp
  8. 占用空间非常小,不到60k
  9. 设置http头信息

效果

jiecaovideoplayer-3.3-demo.apk

Demo Screenshot

使用

1.添加类库

compile 'fm.jiecao:jiecaovideoplayer:3.3'

或直接下载

2.添加布局

<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
    android:id="@+id/custom_videoplayer_standard"
    android:layout_width="match_parent"
    android:layout_height="200dp"/>

3.设置视频地址、缩略图地址、标题

JCVideoPlayerStandard jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.custom_videoplayer_standard);
jcVideoPlayerStandard.setUp("http://2449.vod.myqcloud.com/2449_bfbbfa3cea8f11e5aac3db03cda99974.f20.mp4"
                , "嫂子想我没");
jcVideoPlayerStandard.thumbImageView.setThumbInCustomProject("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640");

4.在包含播放器的FragmentActivityonPause()方法中调用JCVideoPlayer.releaseAllVideos();

其他接口

直接进入全屏,比如在webview中视频播放的适配很麻烦很无头绪,调用此接口直接全屏播放

JCFullScreenActivity.startActivity(this,
    "http://video.jiecao.fm/5/1/%E8%87%AA%E5%8F%96%E5%85%B6%E8%BE%B1.mp4",
    JCVideoPlayerStandard.class,
    "嫂子别摸我");

用代码控制播放按钮的点击,如果是普通状态会播放视频,如果是播放中会暂停视频

jcVideoPlayerStandard.startButton.performClick();
混淆
无需添加

自定义UI

参照JCVideoPlayerSimple,JCVideoPlayerStandard,JCVideoPlayerStandardWithShareButton
  1. 继承JCVideoPlayer,JCVideoPlayer中包含所有关于播放的代码,不包含任何UI的代码
  2. getLayoutId();布局的id
  3. Override init(Context context);这里初始化自定义控件
  4. Override setStateAndUi(int state);是重点,自定义各个状态的UI,如果在其他地方修改UI应该保持谨慎
  5. Override onTouch(),onClick();如果有需要
  6. 在自定义UI之后,应该依然按照README.md中的4步骤来调用播放器

关于控件id的问题,在Base simple ui example中的所有最基础的id是写死在JCVideoPlayer中的,下面的控件id已经findViewById过了不需要再findViewById

控件id
开始按钮start
全屏按钮fullscreen
进度条progress
总共时间total
下方layoutlayout_bottom
上方layoutlayout_top
SurfaceView的容器surface_container

如果想快速的集成视频播放功能,建议参照JCVideoPlayerStandardWithShareButton来做,它继承JCVideoPlayerStandard,JCVideoPlayerStandard的目标是和今日头条的细节保持一致

如果想完全自定义UI,参照JCVideoPlayerStandard

如果在JCVideoPlayer之外写任何关于控制视频的代码不是我们的初衷,请提issue


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值