我有一个带有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);
}
}}
问题是,这些变换动画在分页程序加载后立即可用,但在我的视图分页程序的第一个片段中不可用。即,第一次加载片段时,不会调用transformPage方法。有没有办法手动调用transformPage方法?例如,当我在onCreateView中设置我的ViewPager时?还是别的地方?
发布于 2016-10-04 02:25:40
我遇到了类似的情况,我最终使用了一个假的拖动来引起最初的变换:
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
}发布于 2016-03-22 19:52:11
根据Android开发人员的网站:
每当滚动可见/附加的页面时,都会调用PageTransformer。这为应用程序提供了一个使用动画属性将自定义转换应用于页面视图的机会,因此,当第一次加载页面导航器时,您将看不到任何过渡动画。
这是你一直在使用的一个很好的技巧,但我不知道你是否已经尝试过,但你能在第一次加载时将viewpager作为一个整体进行动画处理吗?
https://stackoverflow.com/questions/30867854
复制相似问题