保证金动画是否缓慢?

时间:2013-02-08 00:02:19

标签: android animation view

我希望在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) {
    }
});

我不知道是什么问题,我还有其他地方有一个视图,我以类似的方式制作动画(调整边距,根据一个-not pager-slider)并且它很流畅。我也看过一个应用程序,根据页面滚动的滚动动态调整一些视图的位置,它非常流畅。

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:6)

任何涉及requestLayout()的动画都会很慢。如果你要做的只是移动一个视图,请使用TranslateAnimationView.offsetLeftAndRight()View.setTranslationX()等。不要使用requestLayout()或任何相关的布局。< / p>