2016-03-08 55 views
0

我有这个听者viewpager调用触摸事件。以一个视图的触摸监听和另一种观点认为

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      Float translation = position * viewpagerWidth *Constants.density; 
      if(positionOffset != 0) 
       image.setTranslationX(- translation -(positionOffsetPixels * Constants.density)/12); 
     } 

     @Override 
     public void onPageSelected(int position) { 
      page = position; 
      mButtons.updateViewIntro(position + 1); 
      switch (position){ 
       case 0: 
        title.setText(getString(R.string.passenger_name)); 
        subtitle.setText(getString(R.string.intro_passenger_subtitle)); 
        new FadeOutAnimation(arrowleft).animate(); 
        break; 
       case 1: 
        title.setText(getString(R.string.intro_mileage)); 
        subtitle.setText(getString(R.string.intro_mileage_subtitle)); 
        if(arrowleft.getVisibility() == View.GONE || arrowleft.getVisibility() == View.INVISIBLE) 
         new FadeInAnimation(arrowleft).animate(); 
        if(arrowright.getVisibility() == View.GONE || arrowright.getVisibility() == View.INVISIBLE) 
         new FadeInAnimation(arrowright).animate(); 
        break; 
       case 2: 
        title.setText(getString(R.string.intro_analytics)); 
        subtitle.setText(getString(R.string.intro_analytics_subtitle)); 
        new FadeOutAnimation(arrowright).animate(); 
        break; 
      } 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

我的问题是:如果我有另一个视图,在底部,这是没有任何连接到这个viewpager。是否可以在它上面设置一个触摸监听器,并使其可以调用viewpager的onPageChangeListener? 正如在,我想通过按另一个对象滚动viewpager。 (我需要将其添加到图像上也是如此)

回答

2

是的,一个简单的触摸监听器设置到您的视图,然后调用setCurrentItem呼机上。

private final View.OnClickListener mListener = new View.OnClickListener() { 
    public void onClick(View view) { 
     mPager.setCurrentItem(<page number here>); 
    } 
} 

编辑:基于您的评论,试试这个:

yourView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     return mPager.onTouchEvent(event); 
    } 
}); 
+0

不是我所需要的。 举例:您知道何时不会更改viewpager页面,但只需将viewpager滚动到例如一半。你在听者的ScrollOffset以像素为单位获得,等... 我想摸摸另一种观点认为,这是下面,并在该视图的触摸事件,它viewpager通过它托特他,让onPageChanged监听器被调用,并从中获取像素的ScrollOffset。基本上,如果我刷卡从底部的观点,我怎么看viewpager移动... –

+0

我不明白你为什么会想这样做,似乎不直观的通过在一个单独的视图拖动手指来滚动视图(用户应该如何学习?)。但是,您可以通过为视图定义触控侦听器,然后使用视图中的事件调用mPager.onTouch(event)来实现它。 – Francesc

+0

谢谢。将现在尝试。好。我在页面中间有一个viewpager。我有一个比屏幕更大的背景,并且它是我翻译的图像视图,创建了视差效果。这在我滚动viewpager时起作用。但是,当我按下背景视差图像时,我的老板也希望它能够工作....所以是的。 –

相关问题