Files
HaiNaOSLenovo/app/src/main/java/com/uiui/videoplayer/activity/ActivityTikTok.java
2021-02-26 18:29:46 +08:00

138 lines
4.5 KiB
Java

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<String> 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);
}
}