ViewPager+Handler实现轮播加手势滑动

来源:互联网 发布:证大财富淘宝贷买家贷 编辑:程序博客网 时间:2024/05/14 22:53
package com.example.peng.fuxiqi;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity implements Handler.Callback, View.OnTouchListener {    private ViewPager mViewPager;    private List<ImageView> list;    private MyAdapter  adapter;    private int[] imgarray=new int[]{R.mipmap.txt_theme29,R.mipmap.txt_theme17,R.mipmap.txt_theme26,R.mipmap.txt_theme29,R.mipmap.txt_theme17};    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mViewPager = (ViewPager) findViewById(R.id.viewpager_main);        initData();        adapter=new MyAdapter();        mViewPager.setAdapter(adapter);        handler=new Handler(this);        initTime();        setListener();        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                if (list.size()>1){                    if (position<1){                        position=list.size()-2;                        mViewPager.setCurrentItem(position,false);                    }else if (position>(list.size()-2)){                        mViewPager.setCurrentItem(1,false);                        position=1;                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private void setListener() {        mViewPager.setOnTouchListener(this);    }    private void initTime() {      handler.sendEmptyMessage(0);    }    private void initData() {        list=new ArrayList<>();        for (int i = 0; i <imgarray.length ; i++) {            ImageView img=new ImageView(MainActivity.this);            img.setImageResource(imgarray[i]);            list.add(img);        }    }    @Override    public boolean handleMessage(Message msg) {        mViewPager.setCurrentItem(mViewPager.getCurrentItem()+1);        handler.sendEmptyMessageDelayed(0,3000);        return false;    }//触摸时handler移除发送消息,抬起时发送消息    @Override    public boolean onTouch(View v, MotionEvent event) {        handler.removeMessages(0);        if (event.getAction()==MotionEvent.ACTION_UP){            handler.sendEmptyMessageDelayed(0,3000);        }        return false;    }//适配器    public class MyAdapter extends PagerAdapter{        @Override        public int getCount() {            return list.size();        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            container.addView(list.get(position));            return list.get(position);        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(list.get(position));        }    }}

0 0
原创粉丝点击