viewpager 自动无限循环 这段代码移到你的程序中就可以用了
来源:互联网 发布:途虎软件下载 编辑:程序博客网 时间:2024/04/29 13:20
本程序需要懂得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() { @Override public void handleMessage(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 public void onPageSelected(int position) { // TODO Auto-generated method stub currentItem =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() { @Override public void run() { while (isLoop) { SystemClock.sleep(1000); handler.sendEmptyMessage(0); } } }).start();
设置你想要的时间
下面贴出我的完整代码 以免有些地方看的云里雾里
java代码
public class ApplicationCenter_activity extends Activity { 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() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(currentItem==3){ currentItem=-1; } aviewpager.setCurrentItem(currentItem+1); } }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.application_layout); new Thread(new Runnable() { @Override public void run() { 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() { @Override public void onPageSelected(int position) { // TODO Auto-generated method stub currentItem =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); } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); }}
这种方式可能欠妥,最好是用imageview,两种状态的图片为内容
<FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <android.support.v4.view.ViewPager android:id="@+id/aviewpager1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" android:orientation="horizontal" > <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="·" android:textColor="#7cfc00" android:textSize="50sp" /> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="·" android:textColor="#000000" android:textSize="50sp" /> <TextView android:id="@+id/tv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="·" android:textColor="#000000" android:textSize="50sp" /> <TextView android:id="@+id/tv4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="·" android:textColor="#000000" android:textSize="50sp" /> </LinearLayout> </FrameLayout>
下面是简单的适配器
package com.yfbiz.adapter;import java.util.List;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;public class MyPagerAdapter extends PagerAdapter { private List<View> viewlist; public MyPagerAdapter(List<View> viewlist){ this.viewlist=viewlist; } @Override public int getCount() { // TODO Auto-generated method stub return viewlist.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub container.addView(viewlist.get(position)); return viewlist.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub container.removeView(viewlist.get(position)); }}
- viewpager 自动无限循环 这段代码移到你的程序中就可以用了
- ViewPager无限循环,自动滚动,兼容PageIndicator的ViewPager
- 打造无限自动循环viewpager
- viewpager自动无限循环实现
- ViewPager自动无限循环滑动
- 无限循环的ViewPager
- 无限循环的Viewpager
- 动态代理对象的创建---------------理解了这段代码,你就懂了动态代理了
- 非常好用的 viewpager 可以自动循环 也可以手动 循环
- 关于自动滚动无限循环viewpager的问题
- 使用ViewPager实现自动无限循环的轮播
- 实现无限自动循环的Viewpager,广告轮询页面
- Android 无限循环且支持自动滚动的ViewPager
- Android ViewPager的无限循环与自动滚动实现
- viewpager的无限循环方法
- viewpager无限循环的问题
- ViewPager实现自动无限循环切换
- android viewpager实现无限循环自动滚动
- bootstrap charisma 入门学习笔记
- 数据手册中的full voltage range和limited voltage range
- java实现单链表
- Nginx配置文件nginx.conf中文详解
- hdu2222ac自动机或者裸字典树
- viewpager 自动无限循环 这段代码移到你的程序中就可以用了
- HDU - 2546 饭卡
- mac(一)
- Intent相关FLAG介绍和Activity启动模式
- UISwitch
- jQuery Cropper 使用说明
- JDK 和 JRE 概念
- hdu 2072 单词数
- POJ2785 4 Values whose Sum is 0