//MainActivity中
public class MainActivity extends Activity {
private ViewPager mViewPager;
private RadioGroup mRadioGroup;
private List<ImageView> mImageViewList;
private ImageLoader mLoader;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 翻页
mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
// 延迟调用
sendMessageDelay();
};
};
private void sendMessageDelay() {
//延迟执行翻页
mHandler.sendEmptyMessageDelayed(0, 2000);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLoader = ImageLoader.getInstance();
// 初始化ImageLoader
mLoader.init(ImageLoaderConfiguration.createDefault(this));
initViews();
// 延迟调用
sendMessageDelay();
}
private void initViews() {
mViewPager = (ViewPager) findViewById(R.id.vp);
// 初始化圆点
initDots();
// 初始化imageview
initImageViews();
mViewPager.setAdapter(new LoopAdapter(mImageViewList));
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int index) {
//页数指示器跟随动
mRadioGroup.check(index % ImageUri.images.length);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
private void initDots() {
//左边距参数
int wrap = RadioGroup.LayoutParams.WRAP_CONTENT;
RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(wrap, wrap);
params.leftMargin = 5;
mRadioGroup = (RadioGroup) findViewById(R.id.rg);
for (int i = 0; i < ImageUri.images.length; i++) {
RadioButton rb = new RadioButton(this);
rb.setId(i);
//设置button属性
rb.setButtonDrawable(R.drawable.x_dot_selector);
//如果是第一个时,不需要加左边距
if (i != 0) {
mRadioGroup.addView(rb, params);
} else
mRadioGroup.addView(rb);
}
mRadioGroup.check(0);
}
private void initImageViews() {
mImageViewList = new ArrayList<ImageView>();
for (int i = 0; i < ImageUri.images.length; i++) {
// 创建ImageView
ImageView iv = new ImageView(this);
iv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// 按下状态,停止播放
mHandler.removeCallbacksAndMessages(null);
}else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
//取消时
sendMessageDelay();
}else if (event.getAction() == MotionEvent.ACTION_UP) {
//抬起时
sendMessageDelay();
}
return true;
}
});
iv.setScaleType(ScaleType.FIT_XY);
mLoader.displayImage(ImageUri.images[i], iv);
// 添加到list中
mImageViewList.add(iv);
}
}
}
适配器
public class LoopAdapter extends PagerAdapter {
private List<ImageView> mList;
public LoopAdapter(List<ImageView> mList) {
super();
this.mList = mList;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv = mList.get(position % ImageUri.images.length);
container.addView(iv);
return iv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);;
}
@Override
public int getCount() {
//注意这个地方
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}