Android ViewPager手动调用PageTransformer transformPage

use*_*088 9 android android-fragments android-viewpager

我有一个带有PageTransformer实现的ViewPager,它为ViewPager的下一页做了一些时髦的东西.我的实现看起来像这样:

class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;

@Override
public void transformPage(View view, float position) {
    int pageWidth = view.getWidth();

    if (position < -1) { // [-Infinity,-1)
        // This page is way off-screen to the left.
        view.setAlpha(0);

    } else if (position <= 0) { // [-1,0]
        // Use the default slide transition when moving to the left page


    } else if (position < 1) { // (0,1]
      do some funky stuff to the page currently being scrolled into the main view on scrolling left


    } else if (position==1) {
       do some funky stuff to the next page
    }

    else { // (1,+Infinity]
        // This page is way off-screen to the right.
        view.setAlpha(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

问题是这些转换动画在加载寻呼机后立即可用,但它们不能用于我的viewpager的第一个片段.即第一次加载片段时,transformPage不会调用该方法.有没有办法transformPage手动调用该方法?即我在里面设置我的ViewPager onCreateView?或者别的地方?

Owl*_*ark 8

我遇到了类似的情况,我最终使用了一个假拖动来导致初始转换:

public void onResume() {
    ...
    Handler handler = new Handler();
    final Runnable r = new Runnable() {
        public void run() {
            // force transform with a 1 pixel nudge
            mViewPager.beginFakeDrag();
            mViewPager.fakeDragBy(1.0f);
            mViewPager.endFakeDrag();
        }
    };
    handler.postDelayed(r, 10);  // some small delay in ms
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*ami -1

根据 Android 开发者网站:

每当滚动可见/附加页面时就会调用 PageTransformer。这为应用程序提供了使用动画属性将自定义转换应用于页面视图的机会。因此,首次加载分页器时您不会看到任何过渡动画。

这是您一直在使用的一个很好的技巧,但我不知道您是否已经尝试过,但是您可以在第一次加载时将视图页面本身作为一个整体进行动画处理吗?