|
package la.trytry.jiecaovideoplayer;
??
import android.graphics.Rect;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.AbsListView;
import android.widget.ListView;
??
import java.util.ArrayList;
??
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;
??
public class VideoActivity extends AppCompatActivity {
????private String videoUrl = "https://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4";
????private ListView listView;
????private ArrayList<string> datas;
????private JCVideoPlayerStandard currPlayer;
????private VideoAdapter adapter;
????private AbsListView.OnScrollListener onScrollListener;
????private int firstVisible;//當前第一個可見的item
????private int visibleCount;//當前可見的item個數
??
????@Override
????protected void onCreate(Bundle savedInstanceState) {
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.activity_video);
????????listView = (ListView) findViewById(R.id.listview);
????????initDatas();
????????initListener();
????}
??
????private void initDatas() {
????????datas = new ArrayList<string>();
????????for (int i = 0; i < 20; i++) {
????????????datas.add(videoUrl);
????????}
????????adapter = new VideoAdapter(VideoActivity.this, datas, R.layout.item_video);
????????listView.setAdapter(adapter);
????}
??
????/**
?????* 滑動監聽
?????*/
????private void initListener() {
????????onScrollListener = new AbsListView.OnScrollListener() {
????????????@Override
????????????public void onScrollStateChanged(AbsListView view, int scrollState) {
??
????????????????switch (scrollState) {
????????????????????case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
????????????????????????break;
??
????????????????????case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
????????????????????????//滑動停止自動播放視頻
????????????????????????autoPlayVideo(view);
????????????????????????break;
??
????????????????????case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
????????????????????????break;
????????????????}
????????????}
??
????????????@Override
????????????public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
????????????????if (firstVisible == firstVisibleItem) {
????????????????????return;
????????????????}
??
????????????????firstVisible = firstVisibleItem;
????????????????visibleCount = visibleItemCount;
????????????}
????????};
??
????????listView.setOnScrollListener(onScrollListener);
????}
??
????/**
?????* 滑動停止自動播放視頻
?????*/
????private void autoPlayVideo(AbsListView view) {
??
????????for (int i = 0; i < visibleCount; i++) {
????????????if (view != null && view.getChildAt(i) != null && view.getChildAt(i).findViewById(R.id.player_list_video) != null) {
????????????????currPlayer = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.player_list_video);
????????????????Rect rect = new Rect();
????????????????//獲取當前view 的 位置
????????????????currPlayer.getLocalVisibleRect(rect);
????????????????int videoheight = currPlayer.getHeight();
????????????????if (rect.top == 0 && rect.bottom == videoheight) {
????????????????????if (currPlayer.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL
????????????????????????????|| currPlayer.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) {
????????????????????????currPlayer.startButton.performClick();
????????????????????}
????????????????????return;
????????????????}
????????????}
????????}
????????//釋放其他視頻資源
????????JCVideoPlayer.releaseAllVideos();
????}
??
????@Override
????public void onBackPressed() {
????????if (JCVideoPlayer.backPress()) {
????????????return;
????????}
????????super.onBackPressed();
????}
??
????@Override
????protected void onPause() {
????????super.onPause();
????????JCVideoPlayer.releaseAllVideos();
????}
}<img src="/uploadfile/Collfiles/20170721/20170721093008222.png" style="width: 105px; height: 60px;"></string></string>
|