viewpager+handler无限轮播

package com.hhhhh.text_wuxianlunbo;


import java.util.ArrayList;

import java.util.List;

import com.hhhhh.text_base.MyPageAdapter;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v4.view.ViewPager;

import android.util.Log;

import android.view.View;

import android.app.Activity;

/**

 * handler+viewpager实现无线轮播

 * 注意,按照正常思路:在适配器里的初始化和卸载的方法都需要按照正常方法加载和卸载进行,因为给的list集合里的条目式最大值

 * 故而,需要一个计算公式   从中间点开始,但是此案例是从默认第一张开始,所以未给此公式

 * 这是计算从中间点左右轮播的计算公式

 * Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%list.size();

 * 此案例加载的是死数据图片,不是网络json数据,请注意。。。

 * @author hl

 */

public class MainActivity extends Activity {


    private ViewPager viewpager;   

    private List<View> list;

    

    

    //使用handler主线程进行自动轮播  

    private Handler handler = new Handler(){  

      public void handleMessage(Message msg) {

          //获取当前条目

          int index = viewpager.getCurrentItem();  

          //向右轮播

          viewpager.setCurrentItem(index+=1);  

          //间隔一秒

          handler.sendEmptyMessageDelayed(2, 2000);  

      };

    };  


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    

        viewpager=(ViewPager) findViewById(R.id.viewpager);

        

        init();

        

        viewpager.setAdapter(new MyPageAdapter(this,list));

        //给主线程handler发送延迟一秒的间隔轮播时间

        handler.sendEmptyMessageDelayed(1,1000);

     

    }


    private List<View> init() {    //设置数据,注意设置自带返回值list可实现循环来回轮播

        list=new ArrayList<View>();

        list.add(View.inflate(this, R.layout.one, null));

        list.add(View.inflate(this, R.layout.two, null));

        list.add(View.inflate(this, R.layout.three,null));

        list.add(View.inflate(this, R.layout.four, null));

        list.add(View.inflate(this, R.layout.five, null));

        list.add(View.inflate(this, R.layout.six, null));

        return list;

      }   


}




package com.hhhhh.text_base;

import java.util.List;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

/**
 * 适配器绑定
 *
 * @author hl
 *
 */
public class MyPageAdapter extends PagerAdapter {
    private List<View> list;
    private Context context;
    
    public MyPageAdapter(Context context,List<View> list) {
        this.list = list;
        this.context=context;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return arg0 == arg1;
    }

    @Override
    // 初始化界面布局,默认从左方第一张开始
    public Object instantiateItem(ViewGroup container, int position) {

        View vvv = list.get(position % list.size());

        // 容器初始化添加界面
        container.addView(vvv);

        return vvv;
    }

    @Override
    //此处卸载正常卸载
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

}

布局文件都不在给出,图片自己提供,是死数据。。。

效果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值