Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带ViewPager偏移的Android动画_Android - Fatal编程技术网

带ViewPager偏移的Android动画

带ViewPager偏移的Android动画,android,Android,假设我在一个ViewPager上有ViewX。X的宽度和高度为50dp。现在,当我将ViewPager从第一页滚动到第二页时, 我想让X相对于当前滚动位置降低它的宽度和高度, 在ViewPager完全滚动到第二页后,高度和宽度至少为20dp 我试图使用onPageScrolled中的positionOffset值,但我似乎无法准确理解它的工作原理,并将其转换为像素 ViewPager.addOnPageListener(new ViewPager.OnPageChangeListener() {

假设我在一个ViewPager上有View
X
。X的宽度和高度为50dp。现在,当我将ViewPager从第一页滚动到第二页时, 我想让X相对于当前滚动位置降低它的宽度和高度, 在ViewPager完全滚动到第二页后,高度和宽度至少为20dp

我试图使用
onPageScrolled
中的
positionOffset
值,但我似乎无法准确理解它的工作原理,并将其转换为像素

ViewPager.addOnPageListener(new ViewPager.OnPageChangeListener() {

      @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            System.out.println(positionOffset);     

            }

});

谢谢,非常感谢您的帮助。

positionOffset
将每页的值从0更改为1(
position
)。根据您的示例,您可以将视图的比例从100%更改为40%。使用
positionOffset
作为x,函数将为y=-0.6x+1

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        if(position == 0) {
            yourView.setScaleX((float)(-0.6 * positionOffset) + 1);
            yourView.setScaleY((float)(-0.6 * positionOffset) + 1);
        } else {
            yourView.setScaleX(0.4f);
            yourView.setScaleY(0.4f);
        }
    }

    [...]

});