android图片轮播效果viewPager

本文详细介绍了如何使用Android中的ViewPager组件和OnPageChangeListener接口实现轮播图的功能,包括初始化控件、设置监听器及改变图片下方指示点的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

界面效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值