1

此外,是否同时在传入和传出视图上调用 transformPage 方法?如何为左侧的传出视图制作动画,为右侧的传入视图制作动画?

4

1 回答 1

-1

是的,transformPage 方法同时在两个视图上调用。您在 transformPage 方法的第一个参数中获取当前视图实例。

public void transformPage(View view, float position) {...}

第二个参数是视图的位置。如文档中所述

页面相对于当前页面位置的位置 * 寻呼机的前端和中心位置。0 是前面和中间。1 是右边一整页位置,-1 是左边一页位置。

可以使用以下代码应用简单的淡入淡出转换

public class MyFadePageTransformer implements ViewPager.PageTransformer {
    public void transformPage(View view, float position) {

        //You can set Tag to view object and getTag to know current view
        //Log.d("Page Transform", "page " + view.getTag().toString());

        if (position < -1 || position > 1) {
            view.setAlpha(0);
        }
        else if (position <= 0 || position <= 1) {
            // Calculate alpha. Position is decimal in [-1,0] or [0,1]
            float alpha = (position <= 0) ? position + 1 : 1 - position;
            view.setAlpha(alpha);
        }
        else if (position == 0) {
            view.setAlpha(1);
        }
    }
}

然后将 PageTransformer 添加到 ViewPager

mViewPager.setPageTransformer(false, new MyFadePageTransformer());
于 2017-08-08T07:33:05.870 回答