Closed star-andy closed 6 years ago
在抖音的demo上加入广告
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(); } }
会一直循环播放广告,如果点击跳过第二个视频将会没有广告,不知道这种情况能有办法解决吗?
你要做成什么效果
@dueeeke 效果和你抖音效果一样,不过视频前后可能会存在贴片广告 。
mIjkVideoView.setVideos(videos); 使用播放多条时记得要关闭循环播放,感谢 @dueeeke 解答
在抖音的demo上加入广告
会一直循环播放广告,如果点击跳过第二个视频将会没有广告,不知道这种情况能有办法解决吗?