public class DouYinActivity extends AppCompatActivity {
private static final String TAG = "DouYinActivity";
private ListIjkVideoView mIjkVideoView;
private DouYinController mDouYinController;
private VerticalViewPager mVerticalViewPager;
private DouYinAdapter mDouYinAdapter;
private List<VideoBean> mVideoList;
private List<View> mViews = new ArrayList<>();
private int mCurrentPosition;
private int mPlayingPosition;
private static final String URL_AD = "https://gslb.miaopai.com/stream/IR3oMYDhrON5huCmf7sHCfnU5YKEkgO2.mp4";
private static final String URL_VOD = "http://mov.bn.netease.com/open-movie/nos/flv/2017/01/03/SC8U8K7BC_hd.flv";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_douyin);
setStatusBarTransparent();
mIjkVideoView = new ListIjkVideoView(this);
PlayerConfig config = new PlayerConfig.Builder().setLooping().build();
mIjkVideoView.setPlayerConfig(config);
mDouYinController = new DouYinController(this);
mIjkVideoView.setVideoController(mDouYinController);
mVerticalViewPager = findViewById(R.id.vvp);
mVideoList = DataUtil.getDouYinVideoList();
for (VideoBean item : mVideoList) {
View view = LayoutInflater.from(this).inflate(R.layout.item_douyin, null);
ImageView imageView = view.findViewById(R.id.thumb);
Glide.with(this).load(item.getThumb()).into(imageView);
mViews.add(view);
}
mDouYinAdapter = new DouYinAdapter(mViews);
mVerticalViewPager.setAdapter(mDouYinAdapter);
mVerticalViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// Log.e(TAG, "mCurrentId == " + position + ", positionOffset == " + positionOffset +
// ", positionOffsetPixels == " + positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
Log.d(TAG, "position: " + position);
mCurrentPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
Log.d(TAG, "onPageScrollStateChanged: " + state);
if (mPlayingPosition == mCurrentPosition) return;
if (state == VerticalViewPager.SCROLL_STATE_IDLE) {
mIjkVideoView.release();
ViewParent parent = mIjkVideoView.getParent();
if (parent != null && parent instanceof FrameLayout) {
((FrameLayout) parent).removeView(mIjkVideoView);
}
startPlay();
}
}
});
//自动播放第一条
mVerticalViewPager.post(this::startPlay);
}
private void startPlay() {
View view = mViews.get(mCurrentPosition);
FrameLayout frameLayout = view.findViewById(R.id.container);
ImageView imageView = view.findViewById(R.id.thumb);
mDouYinController.getThumb().setImageDrawable(imageView.getDrawable());
frameLayout.addView(mIjkVideoView);
List<VideoModel> videos = new ArrayList<>();
AdController adController = new AdController(this);
videos.add(new VideoModel(URL_AD, "广告", adController, true));
videos.add(new VideoModel(mVideoList.get(mCurrentPosition).getUrl(), "这是一个标题", new StandardVideoController(this), true));
mIjkVideoView.setVideos(videos);
mIjkVideoView.setScreenScale(IjkVideoView.SCREEN_SCALE_CENTER_CROP);
mIjkVideoView.start();
mPlayingPosition = mCurrentPosition;
}
/**
* 把状态栏设成透明
*/
private void setStatusBarTransparent() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
View decorView = DouYinActivity.this.getWindow().getDecorView();
decorView.setOnApplyWindowInsetsListener((v, insets) -> {
WindowInsets defaultInsets = v.onApplyWindowInsets(insets);
return defaultInsets.replaceSystemWindowInsets(
defaultInsets.getSystemWindowInsetLeft(),
0,
defaultInsets.getSystemWindowInsetRight(),
defaultInsets.getSystemWindowInsetBottom());
});
ViewCompat.requestApplyInsets(decorView);
getWindow().setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent));
}
}
@Override
protected void onPause() {
super.onPause();
mIjkVideoView.pause();
}
@Override
protected void onResume() {
super.onResume();
mIjkVideoView.resume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mIjkVideoView.release();
}
}