android 广告轮播图片+视频+音频

一、近期有一个需求要实现一款定制化开发的一款广告轮播视频+图片+音频的结合,来吧接下来操作起来.因为发现Viewpager 轮播的监听总会频繁调用导致体验不太好 这边是使用RecyclerView+Handler的结合实现.

1.先看一下实现效果吧 这边是有音频的情况下先播放音频,音频播放结束以后会播放视频声音,并实现了轮播的效果.

在这里插入图片描述
在这里插入图片描述

2.直接上代码吧 ,MainActivity页面

package com.example.lunbo;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.media.MediaMetadataRetriever;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.VideoView;

import com.example.lunbo.utils.PlayerUtils;

import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Lenovo
 */
public class MainActivity extends AppCompatActivity {
   

    private RecyclerView recyclerView;
    private static final int FLAG_NEXT = 10000;
    private MyHandler myHandler = new MainActivity.MyHandler(this);
    public RotationAdapter adapter;
    private int tempPosition = 0;
    private List<MediaDetailBean> mList = new ArrayList<MediaDetailBean>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recycler_view);
        String muPath = "android.resource://" + this.getPackageName() + "/" + R.raw.auy;

        adapter = new RotationAdapter(mList);

        //设置布局
        ViewPagerLayoutManager layoutManager = new ViewPagerLayoutManager(this);
        //横向布局
        layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(layoutManager);

        layoutManager.setOnViewPagerListener(new OnViewPagerListener() {
   
            @Override
            public void onInitComplete() {
   
                MediaDetailBean mediaDetailBean = adapter.getData().get(0);
                myHandler.removeCallbacksAndMessages(null);

                if (mediaDetailBean.getItemType() == 1) {
   
                    //判断第一条数据设置0
                    Message message = myHandler.obtainMessage();
                    message.what = FLAG_NEXT;
                    message.obj = 1;
                    long start = PlayerUtils.getInstance().start(MainActivity.this, muPath, new OnCompletionListener() {
   
                        @Override
                        public void onCompletion() {
   

                        }
                    });
                    myHandler.sendMessageDelayed(message, start);

                } else {
   
                    View viewByPosition = layoutManager.findViewByPosition(0);
                    if (viewByPosition != null) {
   
                        VideoView videoView = viewByPosition.findViewById(R.id.video_view);
                        videoView.setVideoPath(mediaDetailBean.getUri());
                        videoView.start();
                        PlayerUtils.getInstance().start(MainActivity.this, muPath, () -> videoView.setOnPreparedListener(mediaPlayer -> mediaPlayer.setVolume(1, 1)));

                        videoView.setOnPreparedListener(mediaPlayer -> mediaPlayer.
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值