package com.hhhhh.text_wuxianlunbo;
import java.util.ArrayList;
import java.util.List;
import com.hhhhh.text_base.MyPageAdapter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.app.Activity;
/**
* handler+viewpager实现无线轮播
* 注意,按照正常思路:在适配器里的初始化和卸载的方法都需要按照正常方法加载和卸载进行,因为给的list集合里的条目式最大值
* 故而,需要一个计算公式 从中间点开始,但是此案例是从默认第一张开始,所以未给此公式
* 这是计算从中间点左右轮播的计算公式
* Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%list.size();
* 此案例加载的是死数据图片,不是网络json数据,请注意。。。
* @author hl
*/
public class MainActivity extends Activity {
private ViewPager viewpager;
private List<View> list;
//使用handler主线程进行自动轮播
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
//获取当前条目
int index = viewpager.getCurrentItem();
//向右轮播
viewpager.setCurrentItem(index+=1);
//间隔一秒
handler.sendEmptyMessageDelayed(2, 2000);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager=(ViewPager) findViewById(R.id.viewpager);
init();
viewpager.setAdapter(new MyPageAdapter(this,list));
//给主线程handler发送延迟一秒的间隔轮播时间
handler.sendEmptyMessageDelayed(1,1000);
}
private List<View> init() { //设置数据,注意设置自带返回值list可实现循环来回轮播
list=new ArrayList<View>();
list.add(View.inflate(this, R.layout.one, null));
list.add(View.inflate(this, R.layout.two, null));
list.add(View.inflate(this, R.layout.three,null));
list.add(View.inflate(this, R.layout.four, null));
list.add(View.inflate(this, R.layout.five, null));
list.add(View.inflate(this, R.layout.six, null));
return list;
}
}
package com.hhhhh.text_base;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
/**
* 适配器绑定
*
* @author hl
*
*/
public class MyPageAdapter extends PagerAdapter {
private List<View> list;
private Context context;
public MyPageAdapter(Context context,List<View> list) {
this.list = list;
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
// 初始化界面布局,默认从左方第一张开始
public Object instantiateItem(ViewGroup container, int position) {
View vvv = list.get(position % list.size());
// 容器初始化添加界面
container.addView(vvv);
return vvv;
}
@Override
//此处卸载正常卸载
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
布局文件都不在给出,图片自己提供,是死数据。。。
效果