2016-03-08 57 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時起作用。但是,當我按下背景視差圖像時,我的老闆也希望它能夠工作....所以是的。 –