视图的平滑动画

时间:2017-02-17 19:46:55

标签: java android animation android-viewpager

我使用方法pageViewPager中为transformPage制作动画:

问题:我需要修复scale的值(介于0.8 => 1之间,我的意思是:0.81,0.82,0.83 ...... 0.89,0.90 ,... 0.99)变量取决于位置(从0.5到1)以获得从小到大的平滑动画。

        else if (position >= 0.5F && position <= 1F) {                       

                ...
                scale = ??;

                ViewCompat.setScaleX(page, scale);
                ViewCompat.setScaleY(page, 0.85F);
        }

到目前为止我尝试了什么:

scale = (float) (0.8 + ((10*position)/100));  ==> not correct

我也尝试了多个else if,例如:

else if (position >= 0.5F && position <= 0.625F) { 
       scale = .97
}

else if (position >= 0.625F && position <= 0.75F) { 
       scale = .9
}

else if (position >= 0.75F && position <= 0.875F) {  
       scale = .85
}

else if (position >= 0.875F && position <= 1.0F) {  
       scale = .80
}

==&GT;结果是如此滞后。

请帮助,谢谢

- 更新:使用@RadekJ回答我得到反向结果:从1到0.8:

enter image description here

1 个答案:

答案 0 :(得分:1)

我总是这样做:

float progressStart = 0.5f
float progressEnd = 1f;
float progressDelta = progressEnd - progressStart;

float progress = (position - progressStart)/progressDelta;
if(progress>1)progress=1;
if(progress<0)progress=0;

float endValue = 1f;
float startValue = 0.8f;

float delta = endValue - startValue;
float currentScale = startValue + delta*progress;

ViewCompat.setScaleX(page, currentScale);