在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条。这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上当有独到之处,我们可以在其源码中一探究竟。
我们通过Http请求从后端获取到视频数据后,把数据保存为一个List列表,在Activity中用一个RecyclerView展示。我们让RecyclerView的item的大小等于屏幕的尺寸,使屏幕上只展示一个item。给RecyclerView设置SnapHelper为PagerSnapHelper,这样RecyclerView就能模拟出ViewPager的滑动效果。代码如下:

PagerSnapHelper pagerSnapHelper = new PagerSnapHelper();
pagerSnapHelper.attachToRecyclerView(recyclerView);

然后,我们设计item的布局,item中放一个ImageView用来展示视频封面图片,在图片下面放一个空的容器,用来存放视频播放器。布局如下:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><FrameLayoutandroid:id="@+id/video_container"android:layout_width="match_parent"android:layout_height="match_parent"/><ImageViewandroid:id="@+id/cover"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerInParent="true"android:scaleType="centerCrop"/>
</RelativeLayout>

然后,在短视频app开发的编写视频播放器阶段。我们使用腾讯的TxCloundVideoView来作为视频播放器,对其进行封装,添加开始播放,暂停播放,恢复播放,结束播放,释放资源等操作。

@Override
public void init() {mTXCloudVideoView = (TXCloudVideoView) findViewById(R.id.video_view);mTXCloudVideoView.setRenderMode(TXLiveConstants.RENDER_MODE_FULL_FILL_SCREEN);mPlayer = new TXVodPlayer(mContext);TXVodPlayConfig config = new TXVodPlayConfig();config.setCacheFolderPath(mContext.getCacheDir().getAbsolutePath());config.setMaxCacheItems(15);mPlayer.setConfig(config);mPlayer.setAutoPlay(true);mPlayer.setVodListener(this);mPlayer.setPlayerView(mTXCloudVideoView);findViewById(R.id.root).setOnClickListener(this);mVideoCover = findViewById(R.id.video_cover);}

布局文件如下:

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent"><com.tencent.rtmp.ui.TXCloudVideoViewandroid:id="@+id/video_view"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerInParent="true"/><Viewandroid:id="@+id/video_cover"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#000"/><ImageViewandroid:id="@+id/btn_play"android:layout_width="80dp"android:layout_height="wrap_content"android:layout_centerInParent="true"android:adjustViewBounds="true"android:src="@mipmap/icon_video_play"android:visibility="invisible"/></RelativeLayout>

视频播放器使用的时候只需要在Activity中实例化一次即可。首次加载视频的时候, 我们把它放置在RecyclerView的第一个item的容器中。
最后,我们给RecyclerView添加滑动监听,每滑动一页,就把播放器从父容器中取出,添加到当前页面的item 的容器中。并播放绑定在该item上的视频数据。这样就实现了上下滑动切换视频的效果。代码如下:

@Override
public void onAttachedToRecyclerView(@NonNull final RecyclerView recyclerView) {mRecyclerView = recyclerView;mRecyclerView.addOnItemTouchListener(new ItemSlideHelper(mContext, this));mLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();mLayoutManager.setInitialPrefetchItemCount(4);recyclerView.scrollToPosition(mCurPosition);PagerSnapHelper pagerSnapHelper = new PagerSnapHelper();pagerSnapHelper.attachToRecyclerView(recyclerView);recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {findCurVideo();}});
}private void findCurVideo() {int position = mLayoutManager.findFirstCompletelyVisibleItemPosition();if (position >= 0 && mCurPosition != position) {if (mHandler != null) {mHandler.removeCallbacksAndMessages(null);}VideoPlayWrapViewHolder vh = mMap.get(position);if (vh != null && mActionListener != null) {vh.onPageSelected();boolean needLoadMore = false;if (position == mList.size() - 1) {if (mList.size() < COUNT) {ToastUtil.show(R.string.video_no_more_video);} else {needLoadMore = true;}}mActionListener.onPageSelected(vh, needLoadMore);}mCurPosition = position;if (position == 0) {ToastUtil.show(R.string.video_scroll_top);}}
}

短视频app开发中实现上下滑动切换最终实现的效果如下图所示:
上下滑动切换效果可以给用户带来非常良好的体验。当前短视频市场竞争激烈,只有做好产品,才能立于不败之地,在之后,我们还将持续放出有关短视频app开发的源码类解决方案,请继续关注我们的公司号。
声明:本文声明原创,转载请注明出处及作者.

Android短视频app开发中如何实现上下滑动切换效果相关推荐

  1. 短视频app开发中,给短视频加水印的技术该如何实现

    在短视频app开发中,对短视频编辑功能的开发是必不可少的,短视频的编辑处理模块包括视频裁剪.延时/加速特效.视频滤镜.音乐混音.静态贴纸.加水印等模块,我们现在来讲解一下,如果想给短视频添加水印,该如 ...

  2. 短视频SDK架构设计,短视频APP开发目标首选

    短视频 SDK 实践中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...

  3. 短视频app开发:如何实现视频直播功能

    短视频源码的实现 在短视频app开发中,实现视频直播功能需要借助短视频源码.短视频源码可以提供一个完整的视频直播功能模块,包括视频采集.编码.推流等.因此,我们可以选择一些开源的短视频源码,例如LFL ...

  4. 短视频APP开发主要依赖于短视频SDK架构设计

    短视频 SDK 架构中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...

  5. 短视频APP开发——主要功能分析

    一.短视频列表 不论是哪个运营中的短视频平台,除了精美的APP入场图之外,相信剩下的最吸引人眼球的则是推荐视频,因此短视频APP开发中需要特别关注的一个点则是后台的短视频推荐机制,这一推荐机制必须是能 ...

  6. 短视频APP开发制作—生成视频封面、略缩图

    在短视频App开发中,编辑短视频有很多重点功能,如视频滤镜.音乐混音.静态贴纸.加水印等,今天讲一讲如何使用腾讯短视频sdk获取视频封面或略缩图. 首先,初始化控件,设置必要配置: mTXVideoE ...

  7. 短视频APP开发,另类内容的媒介的新突破模式

    在短视频APP开发中,有这么一类账号,他们以发布电影.电视剪辑为主,通过简短的语言,迅速让用户了解这部剧讲了哪些内容,及时是刚上映不多久的电影他们也会很快的给出讲解. 不得不说,这类账号帮助了很多白嫖 ...

  8. 短视频APP开发分解,短视频系统源码特点功能难度剖析

    现在的短视频APP开发功能嵌入其他软件的占大多数,比如微博.微信录像等,其实都是短视频,当然还有专门的比如抖音.快手等.那么既然短视频如此火热,那么短视频APP开发特点是什么?主要功能?难度大不大?下 ...

  9. 进行短视频app开发工作时,可以加入它来保护青少年...

    未成年人迷恋手机的现状一直令广大家长朋友们的忧心,王者.抖音.吃鸡.快手--精彩纷呈的世界在短视频app和无数手游软件中展现出来,凸显了现实世界的无聊,也占用了未成年人们的大幅精力,为了防止未成年人对 ...

最新文章

  1. JavaScript初学者编程题(12)
  2. Python如何实现单步调试
  3. 2013_hangzhou_online
  4. 算法图解:如何判断括号是否有效?
  5. foundation-datepicker只能选年份_你喝的年份酒和原浆酒都怎么来的?
  6. MySQL查询GROUP BY日/月/年
  7. android XMPP即时通讯客户端
  8. HITRAN数据库的使用及考虑辐射时喷管烧蚀的仿真(附代码)
  9. 服务器没有系统能配置ip地址嘛,win10系统没有有效的ip配置怎么解决
  10. Verilog学习笔记-——Verilog模块例化
  11. 【知识分享】C语言的设计模式——责任链、观察者
  12. 智能电表如何采集数据?
  13. 如何将PDF文件中的繁体字转成简体字?
  14. 2011-09-06 [FCKEditor插件移植至CKEditor(plus_format_fck.js)]
  15. 南京大学软件学院 西交计算机,2021届薪酬最高的十大本科专业,前三名都是计算机和相关专业...
  16. Reaction Paper
  17. ubuntu安装libpng12-0:i386失败问题解决
  18. python函数格式化输出唐诗《锦瑟》_编程小白是这样用python把唐诗玩坏的
  19. 做产品的3个敬畏:敬畏用户、敬畏行业、敬畏生活
  20. 为什么会性格内向?如何改变对内向性格的认知?

热门文章

  1. 告别单打独斗,美国网件Orbi多路由系统告诉你什么叫走到哪都有网
  2. (php毕业设计)基于php游戏新闻资讯网站管理系统源码
  3. 700套dedecms5.7织梦dede模板企业网站模板淘客模板
  4. 盗墓笔记——路由器密码破解
  5. python 自带库
  6. sql小数转换为百分数_小学数学16年重点知识汇总,为孩子【收藏】起来吧!
  7. 专业英语(计算机)司爱侠练习版,专业英语(计算机)司爱侠练习版.doc
  8. 怎么查看计算机系统r2,Windows Server 2012 R2 如何找出域中的操作主机(FSMO)
  9. eval python定义变量,表达式与语句 局部变量与全局变量 exec与eval
  10. 嵌入式:ARM异常中断指令SWI、BKPT、CLZ详解