package com.example.gsyvideoplayer.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.gsyvideoplayer.R; import com.example.gsyvideoplayer.adapter.RecyclerBaseAdapter; import com.example.gsyvideoplayer.adapter.RecyclerNormalAdapter; import com.example.gsyvideoplayer.holder.RecyclerItemNormalHolder; import com.example.gsyvideoplayer.model.VideoModel; import com.shuyu.gsyvideoplayer.GSYVideoManager; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class VideoFragment extends Fragment { @BindView(R.id.list_item_recycler) RecyclerView videoList; LinearLayoutManager linearLayoutManager; RecyclerBaseAdapter recyclerBaseAdapter; List dataList = new ArrayList<>(); public VideoFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_video, container, false); ButterKnife.bind(this, view); resolveData(); final RecyclerNormalAdapter recyclerNormalAdapter = new RecyclerNormalAdapter(getActivity(), dataList); linearLayoutManager = new LinearLayoutManager(getActivity()); videoList.setLayoutManager(linearLayoutManager); videoList.setAdapter(recyclerNormalAdapter); videoList.addOnScrollListener(new RecyclerView.OnScrollListener() { int firstVisibleItem, lastVisibleItem; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition(); lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition(); //大于0说明有播放 if (GSYVideoManager.instance().getPlayPosition() >= 0) { //当前播放的位置 int position = GSYVideoManager.instance().getPlayPosition(); //对应的播放列表TAG if (GSYVideoManager.instance().getPlayTag().equals(RecyclerItemNormalHolder.TAG) && (position < firstVisibleItem || position > lastVisibleItem)) { //如果滑出去了上面和下面就是否,和今日头条一样 if(!GSYVideoManager.isFullState(getActivity())) { GSYVideoManager.releaseAllVideos(); recyclerNormalAdapter.notifyDataSetChanged(); } } } } }); return view; } public boolean onBackPressed() { if (GSYVideoManager.backFromWindowFull(getActivity())) { return true; } return false; } @Override public void onPause() { super.onPause(); GSYVideoManager.onPause(); } @Override public void onResume() { super.onResume(); GSYVideoManager.onResume(); } @Override public void onDestroy() { super.onDestroy(); GSYVideoManager.releaseAllVideos(); } private void resolveData() { for (int i = 0; i < 19; i++) { VideoModel videoModel = new VideoModel(); dataList.add(videoModel); } if (recyclerBaseAdapter != null) recyclerBaseAdapter.notifyDataSetChanged(); } }