android图片轮播效果viewPager

来源:互联网 发布:吉他弹唱录音软件 编辑:程序博客网 时间:2024/05/22 06:53

利用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;
}

}

界面效果:



0 0