小圆点加无线轮播加自动轮播

时间:2022-06-02 20:43:23


小圆点

思路:首先在xml中加载一个linearLayout给小圆点一个位置 在onCreate()方法中创建添加小圆点的方法initDot();


private void initDot() {
for (int i = 0; i < img.length; i++) {
ImageView iv = new ImageView(this);
if(i == 0){
iv.setImageResource(R.drawable.selected);
}else{
iv.setImageResource(R.drawable.normal);
}
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20,20);
params.setMargins(5,0,5,0);
ll.addView(iv,params);
listIv.add(iv);//此listView为private List<ImageView> listIv = new ArrayList<>();

 }
}

在setOnPageChangeListener的监听中的onPageSelected的方法中写

for (int i = 0; i < img.length; i++) {

if(position(*img.lenth) == i){//括号为无线轮播
listIv.get(i).setImageResource(R.drawable.selected);
}else{
listIv.get(i).setImageResource(R.drawable.normal);
}
}

无线轮播

在adapter中的getCount中返回Integer.MAX_VALUES;
在设置图片的时候索引加上%img.length

自动轮播
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int currentItem = vp.getCurrentItem();
currentItem ++;
vp.setCurrentItem(currentItem);
}
};

initDots();
//使用timer和handler结合
Timer t = new Timer();TimerTask task = new TimerTask() {    @Override    public void run() {        handler.sendEmptyMessage(0);    }};