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) {
}
});
何が問題なのかわかりません。同様の方法でアニメーション化するビューを備えた他の場所があり(ページャースライダーではなく、マージンを調整します)、スムーズです。また、ポケットベルのスクロールに応じて一部のビューの位置が動的に調整されるアプリも見ましたが、非常にスムーズです。
何か案が?前もって感謝します!