viewpager 自动无限循环 这段代码移到你的程序中就可以用了

viewpager 自动无限循环 这段代码移到你的程序中就可以用了

分类:

viewpager自动无限循环

本程序需要懂得viewpager的基础知识,也就是说你能够自己写出一个手动滑动的viewpager,下面我将附带加小圆点的知识

那么我们回顾一下图片轮转的基础知识,如果你已经对viewpager很熟悉了就不用看了,浪费时间 1.viewpager是在v4兼容报里面的,使用控件时请带上报名 2.数据来源用list存放,我这里用的是textview做的小圆点list《textview》,,layout做的单张幻灯片list《view》,将xml文件inflate成为view,View.inflate()参数我就不写了。 3.viewpager的适配器pageradapter的使用

一切准备就绪之后,你首先要实现的是小圆点与幻灯片的同步 它的逻辑我先带大家理一下

在控件中第一个小圆点为选中状态,就是说一进来第一个小圆点是被选中的。

当幻灯片切换到第二张的时候将第二个小圆点的背景设为你想要设置的被选中的颜色,然后你还要将第一个设为没被选中的颜色。 一直这样下去就形成了一个规律,就有了这样一段代码

if(position==0){ textlist.get(position+1).setTextColor(0x99000000);}if(position==1){textlist.get(position-1).setTextColor(0x99000000);textlist.get(position+1).setTextColor(0x99000000);}if(position==2){textlist.get(position-1).setTextColor(0x99000000);textlist.get(position+1).setTextColor(0x99000000);}if(position==3){textlist.get(position-1).setTextColor(0x99000000);}

也许看完这段代码你会有个疑问就是position从哪来的,也可能有的同学已经知道了,没错他就是有viewpager.setonpagerchangelistener的onpageselected方法里面的

所以将这段代码 放在里面

下面进一步升级,自动循环,我这里用的是简单的handler的方法

首先声明一个handler

private Handler handler = new Handler() {(Message msg) {super.handleMessage(msg);if(currentItem==3){currentItem=-1;}aviewpager.setCurrentItem(currentItem+1);}};

这里面还需要两个变量也贴在这里

现在所处的张数int currentItem;进入无限循环的标识private boolean isLoop = true;

currentItem的赋值我想到的是onpageselected方法中的position。

那么onpagerselected方法要有一些变动

aviewpager.setOnPageChangeListener(new OnPageChangeListener() {@Override(int position) {// TODO Auto-generated method stubcurrentItem =position;textlist.get(position).setTextColor(0x997cfc00);if(position==0){textlist.get(position+1).setTextColor(0x99000000);// 新增一条这里textlist.get(position+3).setTextColor(0x99000000);}if(position==1){textlist.get(position-1).setTextColor(0x99000000);textlist.get(position+1).setTextColor(0x99000000);}textlist.get(position+1).setTextColor(0x99000000);}if(position==3){textlist.get(position-1).setTextColor(0x99000000);}}

最后在oncreate方法里面还要新建一个线程

new Thread(new Runnable() {() {while (isLoop) {SystemClock.sleep(1000);handler.sendEmptyMessage(0);}}}).start();

设置你想要的时间

下面贴出我的完整代码 以免有些地方看的云里雾里

java代码

{private ViewPager aviewpager;private List<View> viewlist;private List<TextView> textlist;private TextView tv1, tv2, tv3, tv4;int currentItem;private boolean isLoop = true;private Handler handler = new Handler() {(Message msg) {super.handleMessage(msg);if(currentItem==3){currentItem=-1;}aviewpager.setCurrentItem(currentItem+1);}};(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.application_layout);new Thread(new Runnable() {() {while (isLoop) {SystemClock.sleep(1000);handler.sendEmptyMessage(0);}}}).start();viewlist = new ArrayList<View>();textlist = new ArrayList<TextView>();aviewpager = (ViewPager) findViewById(R.id.aviewpager1);tv1 = (TextView) findViewById(R.id.tv1);tv2 = (TextView) findViewById(R.id.tv2);tv3 = (TextView) findViewById(R.id.tv3);tv4= (TextView) findViewById(R.id.tv4);View view = View.inflate(getApplicationContext(),R.layout.view1, null);View view1 = View.inflate(getApplicationContext(),R.layout.view2, null);View view2 = View.inflate(getApplicationContext(),R.layout.view3, null);View view3 = View.inflate(getApplicationContext(),R.layout.view4, null);viewlist.add(view);viewlist.add(view1);viewlist.add(view2);viewlist.add(view3);textlist.add(tv1);textlist.add(tv2);textlist.add(tv3);textlist.add(tv4);MyPagerAdapter adapter = new MyPagerAdapter(viewlist);aviewpager.setAdapter(adapter);aviewpager.setOnPageChangeListener(new OnPageChangeListener() {(int position) {// TODO Auto-generated method stubcurrentItem =position;textlist.get(position).setTextColor(0x997cfc00);if(position==0){textlist.get(position+1).setTextColor(0x99000000);textlist.get(position+3).setTextColor(0x99000000);}if(position==1){textlist.get(position-1).setTextColor(0x99000000);textlist.get(position+1).setTextColor(0x99000000);}if(position==2){textlist.get(position-1).setTextColor(0x99000000);textlist.get(position+1).setTextColor(0x99000000);}if(position==3){textlist.get(position-1).setTextColor(0x99000000);}}(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}(int arg0) {// TODO Auto-generated method stub}});}}年轻是我们唯一拥有权利去编织梦想的时光

viewpager 自动无限循环 这段代码移到你的程序中就可以用了

相关文章:

你感兴趣的文章:

标签云: