利用viewPager 和OnPageChangeListener实现轮播图的效果:
主要代码:
public class MainActivity extends Activity implements OnPageChangeListener{
private ViewPager viewPager;
private ViewPagerAdapter adapter;
private ImageView img1;
private ImageView img2;
private ImageView img3;
private List<ImageView> showIv;
private List<ImageView> showIvbottom;
private int currentPosition;
private Handler handler;
private boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setView();
handler = new Handler();
new InnerThread().start();
}
/**
* 初始化各种控件
*/
private void setView(){
flag = true;
currentPosition = 0;
showIv = new ArrayList<ImageView>();
showIvbottom = new ArrayList<ImageView>();
img1 = (ImageView) findViewById(R.id.image1);
showIvbottom.add(img1);
img2 = (ImageView) findViewById(R.id.image2);
showIvbottom.add(img2);
img3 = (ImageView) findViewById(R.id.image3);
showIvbottom.add(img3);
ImageView iv1 = new ImageView(this);
iv1.setImageResource(R.drawable.a);
showIv.add(iv1);
ImageView iv2 = new ImageView(this);
iv2.setImageResource(R.drawable.b);
showIv.add(iv2);
ImageView iv3 = new ImageView(this);
iv3.setImageResource(R.drawable.d);
showIv.add(iv3);
viewPager = (ViewPager) findViewById(R.id.vw_Pager);
adapter = new ViewPagerAdapter(showIv);
viewPager.setOnPageChangeListener(this);
viewPager.setAdapter(adapter);
}
/**
* 设置ViewPager的监听器 当图片上面的图片改变时 下边的点也要跟着改变
*/
@Override
public void onPageSelected(int arg0) {
setImageButtom(arg0);
currentPosition = arg0;
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
/**
* 改变图片下边的点
*/
private void setImageButtom(int arg0){
for(int i=0;i<showIvbottom.size();i++){
if(arg0%showIvbottom.size()==i){
showIvbottom.get(i).setImageResource(R.drawable.adware_style_selected);
}else{
showIvbottom.get(i).setImageResource(R.drawable.adware_style_default);
}
}
}
/**
* 实现Runnable接口
*/
private class InnerRunnable implements Runnable{
@Override
public void run() {
int i = currentPosition%3;
viewPager.setCurrentItem(i);
currentPosition++;
}
}
/**
* 开启工作线程
*/
private class InnerThread extends Thread{
@Override
public void run() {
if(flag){
while(true){
Message.obtain(handler, new InnerRunnable()).sendToTarget();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
flag = false;
}
}
界面效果: