Android 使用 ViewPager循环广告位的实现
程序员文章站
2023-12-10 13:51:46
如何实现循环播放
现在网上实现循环播放都是在adapter的getcount()方法返回一个较大的值并且instantiateitem(viewgroup contain...
如何实现循环播放
现在网上实现循环播放都是在adapter的getcount()方法返回一个较大的值并且instantiateitem(viewgroup container, int position)中通过取余(position/datas.size())的方式,让viewpager不断的播放下去。
这里我们通过修改数据源和设置currentitem的方式实现。
修改数据源:
final list<integer> datas = new arraylist<>(); //这里添加测试数据,实际项目中可以是从网络获取数据 datas.add(r.mipmap.welcome_page_01); datas.add(r.mipmap.welcome_page_02); datas.add(r.mipmap.welcome_page_03); //处理数据源 datas.add(0,datas.get(datas.size()-1)); datas.add(datas.get(1));
设置currentitem需要在onpagechangelistener对象中进行:
mviewpager.setonpagechangelistener(new viewpager.onpagechangelistener() { @override public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) { } @override public void onpageselected(int position) { if(position==0){ mviewpager.setcurrentitem(datas.size()-2,false); }else if(position==datas.size()-1){ mviewpager.setcurrentitem(1,false); } } @override public void onpagescrollstatechanged(int state) { } });
adapter和一般的viewpager的adapter一样即可。
如何实现自动循环:
实现自动循环,方法比较多,比如timer,handler,alarm等等。这里我们使用handle的方式
自定义handler类如下:
public class bannerhander extends handler{ @override public void handlemessage(message msg) { if(msg.what==1){ mviewpager.setcurrentitem(mviewpager.getcurrentitem()+1); sendemptymessagedelayed(1,3000); } } }
获取数据,给viewpager设置adapter之后就可以启动自动循环:
if(!(mhandler!=null && mhandler.get()!=null)){ mhandler = new weakreference<bannerhander>(new bannerhander()); } mhandler.get().sendemptymessagedelayed(1, 300);
这里我们是用了弱引用,主要是为了防止出现内存溢出。
注意:
在设置currentitem时一定要在onpagechangelistener中进行,adapter的finishupdate(view view)中设置会出现白屏的情况。如果哪位大神知道,麻烦指教下。
推荐阅读
-
Android 使用 ViewPager循环广告位的实现
-
Android使用URLConnection提交请求的实现
-
Android中使用 AutoCompleteTextView 实现手机号格式化附带清空历史的操作
-
Android 使用CoordinatorLayout实现滚动标题栏效果的实例
-
Android实现图片循环播放的实例方法
-
Android编程实现全局获取Context及使用Intent传递对象的方法详解
-
Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例
-
Android编程使用自定义shape实现shadow阴影效果的方法
-
android使用Messenger绑定Service的多种实现方法
-
Android使用TabLayou+fragment+viewpager实现滑动切换页面效果