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

本文详细介绍了在Android中如何实现视频和图片混合的轮播效果。通过创建NiceVideoPlayer实例来处理视频播放,并结合TxVideoPlayerController进行控制。同时,使用Glide加载图片,并在点击事件中实现图片预览功能。轮播条目根据数据类型动态添加视频或图片视图,并在触摸事件中控制轮播和视频播放状态。

循环添加视频view  图片view

for (int i = 0 ;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 imgUrl = new ArrayList<>();

int position = 0;

for (int j = 0 ;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应用

android:id="@+id/banner"

android:layout_width="match_parent"

android:layout_height="200dp">

轮播适配器

public class BannerAdapter extends PagerAdapter {

private List viewList;

private int size;

private final int cacheCount = 3;

public BannerAdapter(List 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;

}

637ea53f8a6a1058bd6e034ce4e0f3fe.png

c8f716932e419e2d93aaef9bad072b57.png

2af98d9689c866860740e258f8f7d3d2.png

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值