@Override public void onClick(View v) { if ((mViewPager.getCurrentItem() ) == position) { Toast.makeText(mContext, "点击的位置是:::"+position, Toast.LENGTH_SHORT).show(); } } });
@Override public boolean onTouch(View v, MotionEvent event) { return mViewPager.dispatchTouchEvent(event); } });
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if(ev.getAction() == MotionEvent.ACTION_DOWN){ downX = ev.getX(); downY = ev.getY(); }else if (ev.getAction() == MotionEvent.ACTION_UP) { float upX = ev.getX(); float upY = ev.getY(); //如果 up的位置和down 的位置 距离 > 设置的距离,则事件继续传递,不执行下面的点击切换事件 if(Math.abs(upX - downX) > DISTANCE || Math.abs(upY - downY) > DISTANCE){ return super.dispatchTouchEvent(ev); } View view = viewOfClickOnScreen(ev); if (view != null) { int index = (Integer) view.getTag(); if (getCurrentItem() != index) { setCurrentItem(index); } } } return super.dispatchTouchEvent(ev); }
int childCount = getChildCount(); int currentIndex = getCurrentItem(); int[] location = new int[2]; for (int i = 0; i < childCount; i++) { View v = getChildAt(i); int position = (Integer) v.getTag(); v.getLocationOnScreen(location);
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (GalleryViewPager) findViewById(R.id.viewpager); mViewPager.setPageTransformer(true, new ScalePageTransformer()); findViewById(R.id.root).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return mViewPager.dispatchTouchEvent(event); } }); mPagerAdapter = new SimpleAdapter(this); mViewPager.setAdapter(mPagerAdapter); initData(); }
private void initData() { List<Integer> list = new ArrayList<>(); list.add(R.drawable.wo); list.add(R.drawable.wo1); list.add(R.drawable.wo2); list.add(R.drawable.wo3); list.add(R.drawable.wo4); list.add(R.drawable.wo5); list.add(R.drawable.wo); list.add(R.drawable.wo1); //设置OffscreenPageLimit mViewPager.setOffscreenPageLimit(Math.min(list.size(), 5)); mPagerAdapter.addAll(list); }