详解android 视频图片混合轮播实现

循环添加视频view  图片view

for (int i = 0 ;i<beansArrayList.size();i++){
  if (beansArrayList.get(i).getType()==1){
    videoPlayer = new NiceVideoPlayer(this);
    controller = new TxVideoPlayerController(this);
    videoPlayer.setController(controller);
    videoPlayer.setUp(beansArrayList.get(i).getVideo(),null);
    videoPlayer.continueFromLastPosition(false);
    videoPlayer.setOnStart(new NiceVideoPlayer.onStart() {
      @Override
      public void start() {
        bannerView.startLoop(false);
      }
    });
    controller.setOnRestartPause(new TxVideoPlayerController.onRestartPause() {
      @Override
      public void onStart(boolean start) {
        bannerView.startLoop(start);
      }

      @Override
      public void onRestart() {

      }
    });
    GlideLoading.setImage(this,beansArrayList.get(i).getStrUrl(),controller.imageView());
    viewList.add(videoPlayer);
  }else {
    ImageView img = new ImageView(this);
    img.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    img.setScaleType(ImageView.ScaleType.FIT_XY);
    img.setAdjustViewBounds(true);

    final int finalI = i;
    img.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        ArrayList<String> imgUrl = new ArrayList<>();
        int position = 0;
        for (int j = 0 ;j<beansArrayList.size();j++){
          if (beansArrayList.get(j).getStrUrl().equals(beansArrayList.get(finalI).getStrUrl())){
            position = j ;
          }
          imgUrl.add(beansArrayList.get(j).getStrUrl());
        }
        PreviewPhone.previewPhone(ActivityProductDetails.this,imgUrl,position,v);
      }
    });

    GlideLoading.setImage(this,beansArrayList.get(i).getStrUrl(),img);
    viewList.add(img);

  }

}
bannerView.startLoop(true);
bannerView.setOnPageSelected(new BannerView.onPageSelected() {
  @Override
  public void onNext() {
    if (videoPlayer != null){
      if (videoPlayer.isPlaying()){
        bannerView.startLoop(true);
        videoPlayer.pause();
      }
    }

  }

  @Override
  public void onTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
      case MotionEvent.ACTION_DOWN:
        bannerView.startLoop(false);
        break;
      case MotionEvent.ACTION_MOVE:
        bannerView.startLoop(false);
        break;
      case MotionEvent.ACTION_UP:
      case MotionEvent.ACTION_CANCEL:
        if (videoPlayer.isPlaying()){
          bannerView.startLoop(false);
        }else {
          bannerView.startLoop(true);
        }
        break;
    }
  }
});

xml应用

<com.zym.common.view.banner.BannerView
  android:id="@+id/banner"
  android:layout_width="match_parent"
  android:layout_height="200dp">

</com.zym.common.view.banner.BannerView>

轮播适配器

public class BannerAdapter extends PagerAdapter {

  private List<View> viewList;
  private int size;
  private final int cacheCount = 3;

  public BannerAdapter(List<View> viewList) {
    this.viewList = viewList;
    size = viewList.size();
  }

  @Override
  public void destroyItem(ViewGroup container, int position, Object object) {
    if (viewList.size() > cacheCount){
      container.removeView(viewList.get(position%size));
    }
  }

  @Override
  public Object instantiateItem(ViewGroup container, int position) {
    ViewGroup parent = (ViewGroup) viewList.get(position%size).getParent();
    if (parent != null) {
      parent.removeView(viewList.get(position%size));
    }
    container.addView(viewList.get(position%size));
    return viewList.get(position%size);
  }

  @Override
  public int getCount() {
    return Integer.MAX_VALUE;
  }

  @Override
  public boolean isViewFromObject(View view, Object object) {
    return view == object;
  }

以上所述是小编给大家介绍的android 视频图片混合轮播实现详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView控件

    最近用到需要无限轮播自动播放的轮播轮播图,网上感觉都有这样那样的问题,于是自己写了一个通用的控件CarouselFigureView. 特点: 1.可以轮播view可以自己定义,不一定是要是ImageView2.指示器默认显示,但是可以隐藏3.可以设置指示器的颜色.间距.大小 4.有基础的可以自己修改代码改变指示器位置,这个应该不难5.可以自己开启和关闭自动轮播,开启轮播的时候可以设置轮播时间间隔,默认3000毫秒 我们先来看看效果图: 然后来看看使用代码 xml代码 <?xml version

  • Android ViewPager实现无限循环轮播广告位Banner效果

    现在一些app通常会在头部放一个广告位,底部放置一行小圆圈指示器,指示广告位当前的页码,轮播展示一些图片,这些图片来自于网络.这个广告位banner是典型的android ViewPager实现,但是如果自己实现这样的ViewPager,要解决一系列琐碎的问题,比如: (1)这个广告位ViewPager要支持无限循环轮播,例如,有3张图片,A,B,C,当用户滑到最后C时候再滑就要滑到A,反之亦然. (2)ViewPager要实现自动播放,比如每个若干秒如2秒,自动切换播放到下一张图片. (3)通

  • Android使用ViewPager加载图片和轮播视频

    作为Android基础组件之一,大家对viewpager已经很熟悉了,网上也有很多使用viewpager来加载图片的案例.但是像微信那样点击图片,可以轮播显示图片和视频的例子却没找到.正巧项目中有需求,可以就花时间写了下,现在给一下核心代码,希望对有此需求的同学们起一个抛砖引玉的作用.话不多说了,上代码: 以下是initData的代码 public void initData() { //把聊天界面的图片和视频找出来,并加到数组中,并在 //并根据传进来的position来找到视频或图片在数组中

  • Android实现ViewPage轮播图效果

    在android移动端的开发中,首页轮播图是一个特别常见的功能,所以今天就来将最近写的一个小demo记录一下. 首先当然是新建一个项目代码如下: activity_main.xml文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to

  • Android viewpager自动轮播和小圆点联动效果

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 首先来看一下我们要做成的而效果: 主页面要显示一个viewpager自动轮播+小圆点联动的效果 : 废话不多说,直接上代码: 布局文件: activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

  • Android自定义控件实现优雅的广告轮播图

    前言 今天给大家带来一个新的控件–轮播图,网上已经有很多这类的博客来讲解如何实现的,那么我的这个有哪些特点呢?或是说有哪些不同呢? 满足了轮播图的基本要求,循环滑动,在最后一张切到第一张时可以平稳的过渡 简洁简洁简洁 扩展性强 如何使用 下面我们先展示两种效果图 1 默认效果 代码实现 //布局代码 <com.landptf.view.BannerM android:id="@+id/bm_banner" android:layout_width="match_pare

  • Android ViewPager实现轮播图效果

    先上一张效果图: 说到ViewPager实现轮播图效果,那么肯定会用到PagerAdapter,下面先介绍下这个类. PagerAdapter简介 PagerAdapter是Android.support.v4包中的类,是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用. PagerAdapter主要是viewpager的适配器,而viewPager则也是在android.support.v4扩展包中新添加的一个强大的控件

  • AndroidImageSlider实现炫酷轮播广告效果

    本文实例为大家分享了AndroidImageSlider实现炫酷轮播广告的具体代码,供大家参考,具体内容如下 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. AndroidImageSlider 是一个神奇而且方便的 Android 图片滚动框架,在菜鸟商城项目中我们就要使用这个框架来实现炫酷的轮播广告. AndroidImageSlider 架构分析 首先我们看图说话,下面是 AndroidImageSlider 的架构分

  • Android viewpager无限轮播获取网络图片功能

    本文实例为大家分享了viewpager无限轮播获取网络图片的具体代码,供大家参考,具体内容如下 话不多说直接上代码,你们都懂的 小圆点属性 dot_focused.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="recta

  • android实现banner轮播图无限轮播效果

    本文实例为大家分享了banner轮播图无限轮播效果的具体代码,供大家参考,具体内容如下 效果展示 第一步(权限配置) <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission andr

随机推荐