简单使用viewpager+handler实现图片的轮播

来源:互联网 发布:足彩分析软件app 编辑:程序博客网 时间:2024/05/29 15:18

                     简单的使用viewpager+handler实现图片的轮播  (图片是本地的,以数组的形式所写)

    思路:-1.初始化控件 (UI中只使用了viewpager)

<android.support.v4.view.ViewPager    android:id="@+id/my_ViewPager"    android:layout_width="match_parent"    android:layout_height="match_parent"/>

                      -2.数据源

      -3.适配器

       -4.使用handler发送消息

activity中的代码:

//手写handler方法public class MainActivity extends AppCompatActivity implements Handler.Callback{    private ViewPager mViewPager;    private List<Fragment> data = new ArrayList<>();    private ImageAdapter adapter;    //数据源  找了几张本地的图片    private int[] imager = new int[]{R.mipmap.a,R.mipmap.b,R.mipmap.c,R.mipmap.d,R.mipmap.e};    private int num = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化控件        initView();        handler.sendEmptyMessageDelayed(100,2000);        //适配器        adapter = new ImageAdapter(this,imager);        mViewPager.setAdapter(adapter);        //设置viewpager的点击事件 当手指按下的时候 停止轮播        mViewPager.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                switch (event.getAction()){                    case MotionEvent.ACTION_DOWN:                        handler.removeMessages(100);                        break;                    //当拿起手指的时候继续轮播                    case MotionEvent.ACTION_UP:                        handler.sendEmptyMessageDelayed(100,2000);                        break;                }                return false;            }        });    }    private void initView(){        mViewPager = ((ViewPager) findViewById(R.id.my_ViewPager));    }    //使用handler每隔2秒发送一个空消息  注意handler的实现方法自己手写     private Handler handler = new Handler(this);    @Override    public boolean handleMessage(Message msg) {        switch (msg.what){            case 100:                mViewPager.setCurrentItem(num++);                handler.sendEmptyMessageDelayed(100,2000);                break;        }        return false;    }}
适配器中的代码:

public class ImageAdapter extends PagerAdapter {    private Context context;    private int[] imager = new int[]{R.mipmap.a,R.mipmap.b,R.mipmap.c,R.mipmap.d,R.mipmap.e};    public ImageAdapter(Context context, int[] imager) {            this.context = context;            this.imager = imager;    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view == object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView imageView = new ImageView(context);        imageView.setImageResource(imager[position%5]);        imageView.setScaleType(ImageView.ScaleType.FIT_XY);        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView(((View) object));    }}

原创粉丝点击