Android开发教程:ViewPager示例中的“Infinity”是什么?

4
以下是Android开发者官方教程中的代码,使用ViewPager实现屏幕滑动
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
    //...

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

        if (position < -1) { // **[-Infinity,-1)
            //...
        } else if (position <= 1) { // [-1,1]
            //...
        } else { // (1,+Infinity]
            //...
        }
    }
}
3个回答

2
这些注释的含义或多或少是:
if (position < -1) { // here go all 'position' values lesser than -1
    //...
} else if (position <= 1) { // 'position' in range from -1 to 1, including both -1 and 1
    //...
} else { // and then all 'position' values greater than 1 go here
    //...
}

如果你在Android中寻找Float类型的“无限大”值,那么有Float.NEGATIVE_INFINITYFloat.POSITIVE_INFINITY分别代表它们。请注意保留HTML标签。

1
在网站的例子中,下面的评论实际上解释了行为。
if (position < -1) { // [-Infinity,-1)
    // This page is way off-screen to the left.
    view.setAlpha(0);
}

负无穷到-1描述的是“位置”参数在if块中通过(即为真)的限制。在-Infinity < position < -1的情况下,将执行此代码,这意味着以下代码将在以下点处执行:
else if (position <= 1) { // [-1,1]
        //true for when position is less than or equal to 1
        //but only run when code is greater than or equal to -1
        //as this is an else-if
    } else { // [1,+Infinity]
        //true for when position is greater than 1
    }
< p > position 变量用于定位要转换的片段。

因此,您可以看到负无穷大和-1的限制意味着实际视图在左方向超出屏幕。当位置大于1时,它在右方向超出屏幕,在不满足这些条件时在屏幕上。


1

无限大(Infinity)意味着实际的视图(view)远远超出了屏幕左侧(负无穷)或右侧(正无穷),因此您不需要应用缩放因子,只需将alpha值设置为0即可。

您必须理解这是用于描述在通过ViewPager片段滑动时view转换的代码,因此当view仍然在屏幕上时,应用缩放因子,而当它离开时,只需将其设置为不可见或alpha 0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接