利用优酷云SDK仿今日头条短视频播放
![](https://yqfile.alicdn.com/img_22aae1775c057e08ff6da4eb1a0d4b2b.png)
前言
需求是模仿今日头条短视频播放,过程中遇到的问题如下:
- 优酷云播放器SDK在ListView、ViewPager和ListView、ViewPager和Fragment等多重嵌套模式下全屏工作。
- ListView中加载过多的视频播放器在滑动过程中保证用户体验。
进入ListView中会看到一列视频,看到的视频仅仅是视频的封面,点击播放的图标,才会初始化播放器控件,进行播放视频的操作,保证了列表中视频播放时候的流程和操作体验。
一、解决SDK在ListView嵌套模式下全屏工作
优酷云SDK播放器点击全屏时候,播放器会充满他的父容器。ListView中的Item不是。进行自定义横竖屏操作,重写全屏按钮的实现方法,进行全屏操作时候,打开一个新的播放器页面,再进行全屏操作。
禁用播放器本身的横竖屏设置
youkuPlayerView.setUseOrientation(false);
然后再通过youkuPlayerView.setUIListener设置对横竖屏按钮的监听
...
youkuPlayerView.setUIListener(new YoukuUIListener() {@Overridepublic void onBackBtnClick() { }@Overridepublic void onFullBtnClick() {// 打开全屏的ActivityIntent intent = new Intent();intent.setClass(mContext, VideoFullscreenActivity.class);startActivity(intent);}});
...
重写播放器Activity的onConfigurationChanged,此处是监听手机旋转的地方,在这里加上自定义的横竖屏处理代码
@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {// 即使响应为竖屏,也强制设置为横屏,这样可以始终保持横屏this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}
二、ListView中加载过多的视频播放器在滑动过程中保证用户体验
// 1.定义变量,用于记录当前的playerView控件private YoukuPlayerView currentPlayerView;...viewHolder.iv_bg.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 2.点击播放器浮层上的播放按钮,将上一个正在播放的视频控件释放掉if (null!=currentPlayerView) {currentPlayerView.release();}// 更新正在播放的currentPlayerView控件currentPlayerView = viewHolder.ypv;initCheckedStatus();isChecked.put(position, true);viewHolder.rl_bg.setVisibility(View.INVISIBLE);currentPlayerView.setVisibility(View.VISIBLE);// 播放器控件初始化initPlayer(currentPlayerView);// 开始播放currentPlayerView.playYoukuVideo(vid);notifyDataSetChanged();}});if (isChecked.get(position)) {viewHolder.rl_bg.setVisibility(View.INVISIBLE);viewHolder.ypv.setVisibility(View.VISIBLE);} else {viewHolder.iv_bg.setVisibility(View.VISIBLE);viewHolder.ypv.setVisibility(View.INVISIBLE);}return convertView;}
四、遇到的问题
点击ListView中其中一个视频,进行全屏操作,然后返回。会发现视频出于黑屏,无法播放,优酷SDK报错误。将onResume()
中再次将控件进行初始化,并且调用控件的onPause()
方法
@Overrideprotected void onResume() {super.onResume();Log.i("MainActivity", "onResume()");if(null!=currentPlayerView) {initPlayer(currentPlayerView);currentPlayerView.pause();}}public void initPlayer(YoukuPlayerView youkuPlayerView) {youkuPlayerView.attachActivity(MainActivity.this);youkuPlayerView.setPreferVideoDefinition(VideoDefinition.VIDEO_HD);youkuPlayerView.setPlayerListener(new MyPlayerListener());youkuPlayerView.setUseOrientation(false);youkuPlayerView.setUIListener(new YoukuUIListener() {@Overridepublic void onBackBtnClick() {}@Overridepublic void onFullBtnClick() {Toast.makeText(mContext, "竖屏", Toast.LENGTH_SHORT).show();Intent intent = new Intent();intent.setClass(mContext, VideoFullscreenActivity.class);startActivity(intent);}});}
利用优酷云SDK仿今日头条短视频播放相关推荐
- Android 仿今日头条的视频播放控件(几行代码快速实现)
前段时间由于项目需要用到类似于今日头条的视频播放器,实现在线播放,边缓存边播放,当然也可以播放本地文件,如下图: 这里我推荐大家使用的是jiecaovideoplayer开源库,这个库的播放引擎是ij ...
- android 高仿苹果listview,GitHub - open-android/JieCaoVideoPlayer: 高仿今日头条ListView视频播放和优酷视频播放悬浮窗...
##主要特点 视频全屏播放和浮层小窗播放 可以完全自定义UI 能在ListView.ViewPager和ListView.ViewPager和Fragment等多重嵌套模式下全屏工作 手势修改进度和音 ...
- 安卓视频播放器 一行代码快速实现视频播放,Android视频播放,AndroidMP3播放,安卓视频播放一行代码搞定,仿今日头条 Android视频播放器
一行代码快速实现视频播放,Android视频播放,AndroidMP3播放,安卓视频播放一行代码搞定,真正实现Android的全屏功能 github地址:https://github.com/qius ...
- 安卓视频播放器 仿今日头条视频播放控件----JiaoZiVideoPlayer
前段时间由于项目需要用到类似于今日头条的视频播放器,实现在线播放,边缓存边播放,当然也可以播放本地文件,如下图: 这里写图片描述 这里我推荐大家使用的是jiecaovideoplayer开源库,这个库 ...
- Android仿今日头条的开源项目
起因 看到众多大神纷纷有了自己的开源项目,于是自己琢磨着也想做一个开源项目来学习下,因为每次无聊必刷的app就是今日头条,评论简直比内容都精彩,所以我打算仿今日头条来练练手,期间也曾放弃过,也遇到很多 ...
- android 横向滚动 导航,仿今日头条横向滚动导航栏--原生js
咳咳!先打一波小广告,在上一篇里忘记了,那啥--我的那个个人博客做好了-->(我的博客) 好嘞,言归正传,说说我们的效果. 其实就是实现横向滑动,进行选择. 原理: 鼠标按下,获取当前鼠标坐标, ...
- python爬虫框架论文开题报告范文_仿今日头条新闻爬虫设计毕业论文+设计源码+开题报告...
摘要 随着社会日新月异和互联网进入大数据时代,自媒体得到了迅猛的发展,人们获取新闻资讯的方式越来越多,接触和使用新闻信息的方式正在逐渐改变,受众从被动接受信息到按需主动搜索信息,而新闻的种类繁多杂乱, ...
- Android仿今日头条开源项目
起因 看到众多大神纷纷有了自己的开源项目,于是自己琢磨着也想做一个开源项目来学习下,因为每次无聊必刷的app就是今日头条,评论简直比内容都精彩,所以我打算仿今日头条来练练手,期间也曾放弃过,也遇到很多 ...
- Android 仿今日头条的开源项目
前言 看到众多大神纷纷有了自己的开源项目,于是自己琢磨着也想做一个开源项目来学习下,因为每次无聊必刷的 app 就是今日头条,评论简直比内容都精彩,所以我打算仿今日头条来练练手,期间也曾放弃过,也遇到 ...
最新文章
- php获取表字段,使用 php 获取表的字段信息
- PHPExcel设置自动列宽
- 智能车大赛信标组_第十五届全国大学生智能汽车竞赛在南京信息工程大学圆满闭幕...
- 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论
- UVa11809-Floating-Point Numbers
- 迁移学习与模型融合问题若干
- hashmap初试数组大小为什么一定要是2 的倍数
- flash builder4.6 集成svn1.8报错
- md5加密特征码java,讨论:加密算法特征码及其识别
- 1386 - Cellular Automaton
- 高中英语语法(001)-虚拟语气
- Excel如何简单快速的建立二级下拉菜单?
- Nefu 锐格实验9
- JVM虚拟机与Android虚拟机
- 时间序列及异常检测综述(资料)
- 【华为OD统一考试B卷 | 100分】按身高和体重排队(C++ Java JavaScript Python)
- 计算机方面的英语杂志,计算机类有哪些EI检索的英文期刊
- Centos配置Jenkins实现Android自动打包并上传到蒲公英
- Linux中提示No such file or directory解决方法
- 【STM8】PWM 捕获实战:占空比和频率(TIM1)