2013-02-08 168 views
1

我想在ViewPager滾動時移動視圖。我在視圖尋呼機中找到滾動監聽器,並使用參數positionOffset來調整我想要移動的視圖的左邊距。邊緣動畫緩慢嗎?

它可以工作,但滾動不再流暢。如果我將滾動監聽器評論出來,它會再次平滑。我的動畫視角非常簡單 - 只有一個普通顏色的小方格。 requestLayout()調用僅在此視圖上完成。代碼:

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageSelected(int position) { 
    } 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     if (positionOffset != 0 || (positionOffset == 0 && position == 0)) { 
      pars.leftMargin = (int)(scrollablePart * positionOffset); 
      tabBG.requestLayout(); 
     } 

    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 
}); 

我不知道有什麼問題,我有與我類似的方式動畫視圖其他地方(調節利潤,根據 - 不是尋呼機滑塊),它的流暢。我也看到一個應用程序,其中一些視圖的位置根據傳呼機的滾動動態調整,並且非常平滑。

有什麼想法?提前致謝!

回答

6

任何涉及requestLayout()的動畫將會很慢。如果你所要做的只是移動視圖,請使用TranslateAnimationView.offsetLeftAndRight()View.setTranslationX()等。不要使用requestLayout()或任何相關的佈局。