package com.uiui.videoplayer.activity; import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; import android.view.Window; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.OrientationHelper; import androidx.recyclerview.widget.RecyclerView; import com.uiui.videoplayer.CustomJzvd.JzvdStdAssert; import com.uiui.videoplayer.CustomJzvd.JzvdStdTikTok; import com.uiui.videoplayer.R; import com.uiui.videoplayer.adapter.TikTokRecyclerViewAdapter; import com.uiui.videoplayer.base.ViewPagerLayoutManager; import com.uiui.videoplayer.listener.OnViewPagerListener; import java.util.ArrayList; import java.util.List; import cn.jzvd.Jzvd; public class ActivityTikTok extends AppCompatActivity { private RecyclerView rvTiktok; private TikTokRecyclerViewAdapter mAdapter; private ViewPagerLayoutManager mViewPagerLayoutManager; private int mCurrentPosition = -1; private int position = 0; private List videoPath = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_tiktok); Intent intent = getIntent(); if (null != intent) { position = intent.getIntExtra("position", 0); videoPath = intent.getStringArrayListExtra("list"); } rvTiktok = findViewById(R.id.rv_tiktok); mAdapter = new TikTokRecyclerViewAdapter(this,videoPath ); mViewPagerLayoutManager = new ViewPagerLayoutManager(this, OrientationHelper.VERTICAL); rvTiktok.setLayoutManager(mViewPagerLayoutManager); rvTiktok.setAdapter(mAdapter); rvTiktok.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { } }); mViewPagerLayoutManager.setOnViewPagerListener(new OnViewPagerListener() { @Override public void onInitComplete() { //自动播放第一条 autoPlayVideo(position); } @Override public void onPageRelease(boolean isNext, int position) { if (mCurrentPosition == position) { Jzvd.releaseAllVideos(); } } @Override public void onPageSelected(int position, boolean isBottom) { if (mCurrentPosition == position) { return; } autoPlayVideo(position); mCurrentPosition = position; } }); rvTiktok.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() { @Override public void onChildViewAttachedToWindow(View view) { } @Override public void onChildViewDetachedFromWindow(View view) { Jzvd jzvd = view.findViewById(R.id.videoplayer); if (jzvd != null && Jzvd.CURRENT_JZVD != null && jzvd.jzDataSource != null && jzvd.jzDataSource.containsTheUrl(Jzvd.CURRENT_JZVD.jzDataSource.getCurrentUrl())) { if (Jzvd.CURRENT_JZVD != null && Jzvd.CURRENT_JZVD.screen != Jzvd.SCREEN_FULLSCREEN) { Jzvd.releaseAllVideos(); } } } }); } private void autoPlayVideo(int postion) { if (rvTiktok == null || rvTiktok.getChildAt(0) == null) { return; } JzvdStdAssert player = rvTiktok.getChildAt(0).findViewById(R.id.videoplayer); if (player != null) { player.startVideoAfterPreloading(); } } @Override public void onBackPressed() { if (Jzvd.backPress()) { return; } super.onBackPressed(); } @Override protected void onPause() { super.onPause(); Jzvd.releaseAllVideos(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } return super.onOptionsItemSelected(item); } }