[关闭]
@lichangadd 2016-10-16T16:20:49.000000Z 字数 907 阅读 2454

Finger视频小窗口播放的Android实现

未分类


为了更好的用户体验,现在很多视频类APP都会有视频小窗口功能:在List页面播放视频,当视频滚出可见区域时,视频变成小窗口浮在页面上,如图:
此处输入图片的描述

实现思路:

  1. VideoView和RecyclerView在Dom中是平级的,RecyclerView中展现的仅仅是一张视频的封面(称之为:CoverViewHolder),VideoView监听CoverViewHolder的点击事件,获取CoverViewHolder在屏幕上的大小和位置,并修改自身的大小和位置,同时进行视频的加载。
  2. 监听RecyclerView的滚动事件,动态设置VideoView的translationY。
  1. ViewHelper.setTranslationY(videoView, coverView.getTop() + coverView.getPaddingTop() - getTop());
  1. 监听RecyclerView.Adapter的onViewAttachedToWindow和onViewDetachedFromWindow事件来判断当前CoverViewHolder是否可见:
    a. 当CoverViewHolder滚出屏幕时,VideoView变成小窗口模式(修改位置和大小)。
  1. @Override
  2. public void onViewDetachedFromWindow(RecyclerView.ViewHolder holder){
  3. //切换为小窗口模式,不再监听滚动事件
  4. switch2MiniStyle(holder.itemView);
  5. }
 b. 当CoverViewHolder重新出现时,VideoView变成普通模式。
  1. @Override
  2. public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
  3. //且回到正常模式,恢复监听滚动事件
  4. switch2NormalStyle(holder.itemView);
  5. //同步VideoView和CoverViewHolder的位置
  6. keepPostion(holder.itemView);
  7. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注