viewpager即能实现滑动切换,又能点击切换的实现

来源:互联网 发布:膛线管55淘宝400元 编辑:程序博客网 时间:2024/06/05 00:59

viewpager对于我们来说并不陌生,用到的地方很多,也很方便,这里我就简单的处理一下滑动和点击veiwpager切换,废话不多说,上代码:

布局很简单:不多说

<RelativeLayout    android:layout_width="match_parent"    android:layout_height="80dp">    <android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="match_parent"        android:layout_height="80dp"        android:background="@color/colorWhite"></android.support.v4.view.ViewPager></RelativeLayout>
在Activity中 ,

注:这里只是部分代码

主要就是设置viewpager的点击监听,计算手指按下、抬起是的X坐标(防抖动处理),然后设置就行……

private ArrayList<View> pageview;

//设置无标题栏viewPager = (ViewPager) findViewById(R.id.viewPager);View view1 = getLayoutInflater().inflate(R.layout.repair_child_item, null);View view2 = getLayoutInflater().inflate(R.layout.repair_child_item2, null);
pageview = new ArrayList<View>();pageview.add(view1);pageview.add(view2);

 //viwepager绑定适配器    viewPager.setAdapter(mPagerAdapter);    //默认选中第一个    tv_repair.setVisibility(View.VISIBLE);    tv_repair.setText(datas.get(0));    //设置触摸事件    viewPager.setOnTouchListener(new View.OnTouchListener() {        @Override        public boolean onTouch(View v, MotionEvent event) {            int action = event.getAction();            switch (action) {                case MotionEvent.ACTION_DOWN:                    downX = event.getX();                    break;                case MotionEvent.ACTION_UP:                    upX = event.getX();                    //防抖动                    if ((upX - downX) < 10) {                        i++;                        viewPager.setCurrentItem(i);                    }                    if (i == pageview.size() - 1) {                        iv_change.setVisibility(View.GONE);                    }                    break;            }            return false;        }    });    //viewPager设置滑动监听\界面改变监听    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {        @Override        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        }        @Override        public void onPageSelected(int position) {        }        @Override        public void onPageScrollStateChanged(int state) {            if (state == ViewPager.SCROLL_STATE_DRAGGING) {                //正在滑动   pager处于正在拖拽中                Log.d("测试代码", "onPageScrollStateChanged=======正在滑动" + "SCROLL_STATE_DRAGGING");            } else if (state == ViewPager.SCROLL_STATE_SETTLING) {                //pager正在自动沉降,相当于松手后,pager恢复到一个完整pager的过程                Log.d("测试代码", "onPageScrollStateChanged=======自动沉降" + "SCROLL_STATE_SETTLING");            } else if (state == ViewPager.SCROLL_STATE_IDLE) {                //空闲状态  pager处于空闲状态                Log.d("测试代码", "onPageScrollStateChanged=======空闲状态" + "SCROLL_STATE_IDLE");            }        }    });}
viewpager的适配器

//数据适配器PagerAdapter mPagerAdapter = new PagerAdapter() {    @Override    //获取当前窗体界面数    public int getCount() {        // TODO Auto-generated method stub        return pageview.size();    }    @Override    //断是否由对象生成界面    public boolean isViewFromObject(View arg0, Object arg1) {        // TODO Auto-generated method stub        return arg0 == arg1;    }    //是从ViewGroup中移出当前View    public void destroyItem(View arg0, int arg1, Object arg2) {        ((ViewPager) arg0).removeView(pageview.get(arg1));    }    //返回一个对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager    public Object instantiateItem(View arg0, int arg1) {        ((ViewPager) arg0).addView(pageview.get(arg1));        return pageview.get(arg1);    }};















0 0
原创粉丝点击